2017-09-13 2 views
2

この動作は期待されていますか? 2つの以上のパスが2パス目から始まる有限の値を得ながら、1以上のサイズを有するサンプルのminibatchに損失値を算出するR mxnet 1 passはNANを損失値として返します

library(mxnet) 

hidden_u_1 <- 100 
activ_hidden_1 <- 'tanh' 

hidden_u_2 <- 1 

learn_rate <- 0.001 

initializer <- mx.init.uniform(1) 

optimizer <- 'rmsprop' #sgd 

loss <- mx.metric.mse 

device.cpu <- mx.cpu() 

mini_batch <- 64 #8 

rounds <- 1 #2 


## data symbols 

nn_data <- mx.symbol.Variable('data') 
nn_label <- mx.symbol.Variable('label') 


## first fully connected layer 

flatten <- mx.symbol.Flatten(data = nn_data) 

fc1 <- mx.symbol.FullyConnected(data = flatten 
           , num_hidden = hidden_u_1) 

activ1 <- mx.symbol.Activation(data = fc1, act.type = activ_hidden_1) 

## second fully connected layer 

fc2 <- mx.symbol.FullyConnected(data = activ1, num_hidden = hidden_u_2) 

q_func <- mx.symbol.LinearRegressionOutput(data = fc2, label = nn_label, name = 'regr') 


# initialize NN 

train.x <- matrix(rnorm(640, 0, 1), ncol = 10) 
train.x <- t(train.x) 
dim(train.x) <- c(nrow(train.x), 1, 1, ncol(train.x)) 
train.y = rnorm(64, 0, 1) 

nn_model <- mx.model.FeedForward.create(
    symbol = q_func, 
    X = train.x, 
    y = train.y, 
    ctx = device.cpu, 
    num.round = rounds, 
    array.batch.size = mini_batch, 
    optimizer = optimizer, 
    eval.metric = loss, 
    learning.rate = learn_rate, 
    initializer = initializer 
) 

1ラウンド(パス)は常に、NaNを返し。

ミニブッチ(たとえば、64/8)のn倍のサンプル数の場合、1ラウンド後でも損失が計算可能です。

答えて

0

これはhereと報告されており、hereと固定されているMXNetの問題です。

+0

ありがとう)私でした。 –

+0

@AlexeyBurnakovあなたが自分で問題を解決したことを理解できませんでした。それは素晴らしいです! –

+0

私は記者でした。 ) –

関連する問題