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ラウンド後でも損失が計算可能です。
ありがとう)私でした。 –
@AlexeyBurnakovあなたが自分で問題を解決したことを理解できませんでした。それは素晴らしいです! –
私は記者でした。 ) –