2017-08-16 174 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

請注意,如果您在訓練過程中犯了同樣的錯誤,您的檢查點將爲空,您需要先重新訓練模型。