如何更改此train参数(旧版本代码)并在trainer扩展中使用它。在Chainer:5.4.0中使用此代码需要进行哪些必要的更改。
ValueError: train argument is not supported anymore. Use
chainer.using_config
[AutoEncoder / StackedAutoEncoder / Regression.py] (https://github.com/quolc/chainer-ML-examples/blob/master/mnist-stacked-autoencoder/net.py)
[Train.py] (https://github.com/quolc/chainer-ML-examples/blob/master/mnist-stacked-autoencoder/train_mnist_sae.py)
for epoch in range(0, n_epoch):
print(' epoch {}'.format(epoch+1))
perm = np.random.permutation(N)
permed_data = np.array(input_data[perm])
sum_loss = 0
start = time.time()
for i in range(0, N, batchsize):
x = chainer.Variable(permed_data[i:i+batchsize])
y = chainer.Variable(permed_data[i:i+batchsize])
optimizer.update(model, x, y)
sum_loss += float(model.loss.data) * len(y.data)
end = time.time()
throughput = N / (end - start)
print(' train mean loss={}, throughput={} data/sec'.format(sum_loss
/ N, throughput))
sys.stdout.flush()
# prepare train data for next layer
x = chainer.Variable(np.array(train_data))
train_data_for_next_layer = cuda.to_cpu(ae.encode(x, train=False).data)
在错误中指出了两个不同的部分: 1. Optimizer.update(model,x,y) 2.为下一层第二行准备火车数据,这些数据与每层中的节点数不匹配。错误代码如下。
InvalidType:
Invalid operation is performed in: LinearFunction (Forward)
Expect: prod(in_types[0].shape[1:]) == in_types[1].shape[1]
Actual: 784 != 250
答案 0 :(得分:2)
关于训练论证,详细信息写在这里:https://docs.chainer.org/en/stable/upgrade_v2.html
v1中的dropout使用train参数,但是现在Chainer使用config来管理其阶段:是否进行训练。 因此,有两件事要做。 首先,从脚本中删除训练参数。 其次,在上下文中移动推理代码。
with chainer.using_config(‘train’, False):
# define the inference process
为下一层第二行准备训练数据,这些数据与每一层中的节点数不匹配。
您可以共享错误消息吗?