2017-08-15 102 views
0

我剛剛開始學習NN最近Python與keras,我有一個非常明顯的問題,似乎沒有人提到過它的答案。如何存儲和訪問經過訓練的神經網絡

這個問題很簡單。

在獲取數據,構建模型並訓練您的網絡後會發生什麼?
每一個教程都會經歷這個徹底的,但從來沒有提到如何使用你的訓練模型或之後存儲它。
所以比如我寫了這個簡單的代碼與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圖片並通過預先訓練的模型運行並檢測答案。

如何將經過訓練的模型與Python存儲在一起,使用JS或php訪問它,通過它運行上傳的圖片,並將輸出返回給用戶。

謝謝,抱歉,如果我的問題似乎愚蠢或明顯。

回答

0

這是一個例子,如何可以保存在keras你的神經網絡在JSON和H5:

# 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))