如何存储和访问训练有素的神经网络

时间:2017-08-15 21:11:06

标签: python neural-network keras

我刚开始使用keras在python上学习NN,我有一个非常明显的问题,似乎没有人提到它的答案。

问题很简单。

获取数据,构建模型并培训网络后会发生什么?
每个教程都经过彻底的讨论,但从未提及如何使用训练有素的模型或在此之后存储它。
例如,我用keras编写了这个简单的代码来训练MNIST上的网络:

model = Sequential()
model.add(Convolution2D(32, kernel_size=3,data_format="channels_first", 
activation='relu', input_shape=(1,28,28)))
model.add(Convolution2D(32, (3 ,3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
#compiling
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
#fitting and training
model.fit(X_train, Y_train,batch_size=32, epochs=1, verbose=1)

现在如何在关闭编辑器后存储最终网络并重新使用它?

例如,如果我想构建一个简单的Web界面来上传MNIST pic并通过预先训练的模型运行它并检测答案。

如何使用Python存储经过训练的模型,使用JS或php访问它,通过它运行上传的图片,并将输出返回给用户。

谢谢,对不起,如果我的问题看起来很愚蠢或明显。

1 个答案:

答案 0 :(得分:1)

这是一个如何在json和h5中将你的神经网络保存在keras中的例子:

# serialize model to JSON
model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)
# serialize weights to HDF5
model.save_weights("model.h5")
print("Saved model to disk")

这就是你可以再加载它的方法:

# load json and create model
json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
# load weights into new model
loaded_model.load_weights("model.h5")
print("Loaded model from disk")

最后,您可以在新测试数据上评估加载的模型:

# evaluate loaded model on test data
loaded_model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
score = loaded_model.evaluate(X, Y, verbose=0)
print("%s: %.2f%%" % (loaded_model.metrics_names[1], score[1]*100))