改变Chainer 5中Train的论点

时间:2019-05-06 07:29:01

标签: version-control autoencoder chainer

如何更改此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

1 个答案:

答案 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
  

为下一层第二行准备训练数据,这些数据与每一层中的节点数不匹配。

您可以共享错误消息吗?