2017-10-11 258 views
1

我使用Keras訓練了DNN。但是,我無法保存和加載模型。保存DNN模型保存3個文件。如何加載?

from keras.models import load_model 
model.save('/home/ubuntu/pynb/savedmodel.tfl') 
#model.load('/home/ubuntu/pynb/savedmodel.tfl') 

但我發現,而不是savedmodel.tfl文件,我覺得3個文件與.META,和的.index .data.00000-的-00001的擴展。 因此,當我嘗試使用model.load加載時,它表示找不到該文件。

我也嘗試過其他的替代品建議在SO

model_json = model.to_json() 

但我得到一個錯誤 AttributeError的: 'DNN' 對象有沒有屬性 'to_json'

我使用Keras版本2.0.4 。

請建議如何正確保存以及如何從3個文件加載情況?

編輯:(我加入有關建立模型代碼)

net = tflearn.input_data([None, size_of_each_vector]) 
net = tflearn.embedding(net, input_dim=vocab_size, output_dim=128) 
net = tflearn.lstm(net, 128, dropout=0.6) # Set the dropout to 0.6 
net = tflearn.fully_connected(net, no_of_unique_y_labels, activation='softmax') # relu or softmax 
net = tflearn.regression(net, 
        optimizer='adam', 
        learning_rate=1e-4, 
        loss='categorical_crossentropy') 

model = tflearn.DNN(net, tensorboard_verbose=0) 
model.fit(X_train_padded_seqs, y_train, 
     validation_set=(X_test_padded_seqs, y_test), 
     n_epoch=n_epoch, 
     show_metric=True, 
     batch_size=100) 
+0

model.save()保存到HDF5文件,那麼如果你保存爲.h5擴展名而不是.tfl,會發生什麼?另請注意,model.to_json()僅保存模型的體系結構。它不會像model.save()那樣保存其權重或訓練配置。這就是說,什麼類型的對象是模型?鑑於錯誤消息指出DNN對象沒有to_json(),這表明您的模型不是Keras Sequential或Functional模型之一。你能分享你的代碼,顯示正在實例化的模型嗎? – blackHoleDetector

+0

感謝您的回覆。即使我將.h5作爲擴展名(保存3個文件),錯誤/問題也是一樣的。 是的,它是一個DNN對象。我編輯了這個問題,添加了顯示正在實例化模型的代碼 – rajkiran

+0

我是一個新手,我期待使用tflearn與Keras一起構建模型。 如果這個假設是錯誤的,我可以請求你發佈如何使用Keras構建相同的模型? – rajkiran

回答

1

您正在使用的模型是Tensorflow模型。您的模型必須是Keras模型才能利用Keras保存功能。

一旦您將模型轉換爲Keras模型(如果您選擇),this video將覆蓋Keras提供的不同保存和加載機制。

此外,只是一個快速注意,model.to_json()只保存模型的體系結構。它不會保存像model.save()那樣的重量或訓練配置。