val_acc没有确定要改进以便将我的模型保存到我的文件路径. 我做错了什么



我一直在玩我在GitHub上找到的一些深度学习代码。我合并了自己的数据集。到目前为止我的代码显示

from keras.layers import Input, Dense, concatenate, Activation
from keras.models import Model
tweet_input = Input(shape=(45,), dtype='int32')
tweet_encoder = Embedding(100000, 200, weights=[embedding_matrix], input_length=45, trainable=True) 
(tweet_input)
bigram_branch = Conv1D(filters=100, kernel_size=2, padding='valid', activation='relu', strides=1) 
(tweet_encoder)
bigram_branch = GlobalMaxPooling1D()(bigram_branch)
trigram_branch = Conv1D(filters=100, kernel_size=3, padding='valid', activation='relu', strides=1) 
(tweet_encoder)
trigram_branch = GlobalMaxPooling1D()(trigram_branch)
fourgram_branch = Conv1D(filters=100, kernel_size=4, padding='valid', activation='relu', strides=1) 
(tweet_encoder)
fourgram_branch = GlobalMaxPooling1D()(fourgram_branch)
merged = concatenate([bigram_branch, trigram_branch, fourgram_branch], axis=1)
merged = Dense(256, activation='relu')(merged)
merged = Dropout(0.2)(merged)
merged = Dense(1)(merged)
output = Activation('sigmoid')(merged)
model = Model(inputs=[tweet_input], outputs=[output])
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.summary()

from keras.callbacks import ModelCheckpoint
filepath="CNN.{epoch:02d}.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, 
mode='max')
model.fit(x_train_seq, y_train, batch_size=32, epochs=5,
validation_data=(x_val_seq, y_validation), callbacks = [checkpoint])

无论如何,我得到的结果看起来有点像这样:

Train on 19926 samples, validate on 203 samples
Epoch 1/5
11840/19926 [================>.............] - ETA: 1:20 - loss: 0.0381 - accuracy: 0.97 - ETA: 1:20 - loss: 0.0385 - accuracy: 0.97 - ETA: 1:19 - loss: 0.0385 - accuracy: 0.97 - ETA: 1:19 - loss: 0.0-383 - accuracy: 0.97 - ETA: 1:19 - loss: 0.0389 - accuracy: 0.97 - ETA: 1:19 - loss: 0.0389 - accuracy: 0.97....... 

它持续了很长时间

.....<keras.callbacks.callbacks.History at 0x28e6065bb08>

我的val_acc没有确定正在改进以保存在我的文件路径中,以便我可以继续import_load。 我接下来要做的是:

from keras.models import load_model
loaded_CNN_model = load_model(filepath)
loaded_CNN_model.evaluate(x=x_val_seq, y=y_validation)

老实说,我一直在研究别人的代码,看看我对正在发生的事情的理解程度如何,但老实说,我完全陷入了困境。不知道我做错了什么,因为 val-acc 没有确定正在改善。

如果要保存模型以供将来使用,可以将其序列化为 json:

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

要导入模型,您可以使用以下代码:

# Import the following method
from keras.models import model_from_json
# 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))

来源 : https://machinelearningmastery.com/save-load-keras-deep-learning-models/

最新更新