python - 为了将我的模型保存到我的文件路径,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/
推荐阅读
- kotlin - IntelliJ Kotlin - MainKt 运行/调试配置不可用,无法运行项目
- python - 任务不运行 Luigi
- python - 新创建的 anaconda 环境如何已经安装了所有库?
- python - Wagtail 删除重音字符,但应保留它
- ruby-on-rails - 使用 ViewComponent 和自定义助手进行双重渲染
- dictionary - 错误:尝试在自定义 HF 数据集上使用 trainer.train() 时,vars() 参数必须具有 __dict__ 属性?
- html - ANGULAR - 如何禁用类使用(验证问题)
- firebase - FutureBuilder:在 nul 上调用了方法“&”
- selenium-webdriver - Selenium-Java - org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死了
- html - 标签内的 div 转到新行