2017-06-19 162 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) –