2017-06-19 104 views
1

我已經訓練並測試了一個前饋神經網絡,它使用Python中的Keras和數據集。但每次,爲了識別帶有外部數據的新測試集(外部因爲數據未包含在數據集內),我必須重新訓練前饋神經網絡來計算測試集。比如每次我必須做的:使用Keras Python測試神經網絡

model.fit (data, output_data) 
prediction=model.predict_classes(new_test) 
print "Prediction : " prediction 

獲得正確的輸出:

Prediction: [1 2 3 4 5 1 2 3 1 2 3] 
    Acc: 100% 

現在我想測試一個新的測試集,即「new_test2.csv」,無需重新培訓一遍,只是用網絡學到了什麼。我也在考慮一種實時識別。

我該怎麼做?

在此先感謝

回答

2

在您的培訓文件,你可以節省使用

model.save('my_model.h5') 
模型

後來,只要你想測試,你可以加載它

from keras.models import load_model 
model = load_model('my_model.h5') 

然後,你可以撥打model.predict什麼。

3

有了訓練有素的模型,您可以預測任何新的數據。你不需要再培訓任何東西,因爲(希望)你的模型可以推廣它學習看不見的數據並達到相當的準確性。

數據只給從「new_test2.csv」你的預測功能:

prediction=model.predict_classes(content_of_new_test2) 

很明顯,你需要的相同類型和等級的數據。除此之外,您需要以與您對模型進行培訓的數據進行轉換的相同方式對新數據應用任何轉換。

如果你願意,你可以設置與瓶的API實時預測:

http://flask.pocoo.org/

關於術語和訓練正確的方法:在培訓

火車設置(如所有數據的70%)。

驗證您的培訓與驗證集(例如您的數據的15%)。您可以使用訓練中的準確度和損失值來調整超參數。

然後你通過從測試預測數據評估你的模型最終性能設置(數據再次15%)。那必須是數據,您的網絡以前從未見過,也沒有被您用來優化訓練參數。

之後,您可以預測上的生產數據。

如果你想保存你的訓練模型使用這種(從Keras資料爲準):

from keras.models import load_model 

model.save('my_model.h5') # creates a HDF5 file 'my_model.h5' 
del model # deletes the existing model 

# returns a compiled model 
# identical to the previous one 
model = load_model('my_model.h5') 

https://keras.io/getting-started/faq/#how-can-i-save-a-keras-model

+0

謝謝你的回答。您可以考慮一個腳本,其中包含用於測試新條目的所有列車和測試代碼。我只用一個腳本,每次重新訓練網絡以預測新測試集的輸出。我以前的請求涉及到我應該怎麼做,以保存/調用訓練的神經網絡來測試新的數據集。基本上,我需要一些存儲我的網絡並嘗試從其知識中識別任何東西的東西。我希望已經清楚。 @petezurich –

+0

從您的問題和評論中,我不完全清楚您是否將您的數據分解爲火車,驗證和測試數據的方法是正確的。在我的回答中看到我的描述。這樣做非常重要,否則你會得到錯誤的結果。 – petezurich

+1

爲了解決潛在問題...(+1) –