首页 > 解决方案 > 为了将我的模型保存到我的文件路径,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 没有确定要改进。

标签: pythonkerasjupyterconv-neural-network

解决方案


如果要保存模型以供将来使用,可以将其序列化为 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/


推荐阅读