2017-08-16 123 views
0

stackoverflowers,我需要张量专家的帮助。其实我已经建立了一个多层感知器,训练它,测试它,并且一切都很好。但是,当我恢复模型并尝试再次使用它时,其准确性不符合训练模型,并且预测与真实标签有很大不同。我用于恢复预测的代码如下:(我正在使用R)如何从恢复的模型中预测MLP张量流?

pred <- multiLayerPerceptron(test_data) 
init <- tf$global_variables_initializer() 
with(tf$Session() %as% sess, { 
    sess$run(init) 
    model_saver$restore(sess, "log_files/model_MLP1") 
    test_pred_1 <- sess$run(pred, feed_dict= dict(x = test_data)) 

}) 

是否所有代码都正常?仅供参考,我希望通过这部分代码来获得我的模型对test_data的预测。

+0

要明确一点,您是使用模型上的相同数据还是使用不同的“测试”数据集? –

+0

我正在使用另一组作为“training_data”,但当然是同一种数据。问题是,当我在训练之后的同一个环节中评估这个测试集时,模型的准确性也很好,但是一旦我关闭了所有内容并尝试恢复模型,我就会觉得它的行为就像随机生成的神经网络根本没有受过训练。因此,我认为问题在于恢复语法。 – Kaz

+0

因此,它对你的训练集效果很好,但一旦进入“真实世界”,它就不能很好地工作。听起来像是过度拟合的例子。 –

回答

0

您的代码未显示model_saver已初始化的位置,但应在创建计算图形后创建。如果不是,它不知道要恢复/保存哪些变量。因此在pred <- multiLayerPerceptron(test_data)之后创建您的model_saver

请注意,如果您在训练过程中犯了同样的错误,您的检查点将为空,您需要先重新训练模型。