硬泡菜ANN
pickle Keras ANN
我正在尝试使用此代码通过 Keras 拟合 ANN,然后对其进行 pickle:
early_stopping = EarlyStopping(monitor='val_loss', patience=4, mode='auto')
model = Sequential()
model.add(Dense(units=40, kernel_initializer='random_uniform', input_dim=x_train.shape[1], activation='relu'))
model.add(Dense(units=1, kernel_initializer='random_uniform', activation='sigmoid', W_regularizer=reg))
model.compile(loss='binary_crossentropy', optimizer='adam')
model.fit(x=x_train, y=y_train, epochs=1, validation_data=(x_val, y_val), callbacks=[early_stopping])
pickle_file_and_path = 'C:/Bla/DLModel20180816.sav'
pickle.dump(model, open(pickle_file_and_path, 'wb'))
不幸的是,我得到:
pickle.dump(model, open(pickle_file_and_path, 'wb'))
TypeError: can't pickle _thread.RLock objects
有什么想法吗?
存储 Keras 模型的规范方法是使用内置的 model.save()
方法将模型保存到 HDF5 文件中。
调整您的代码:
model = Sequential()
model.add(Dense(units=40, kernel_initializer='random_uniform', input_dim=x_train.shape[1], activation='relu'))
model.add(Dense(units=1, kernel_initializer='random_uniform', activation='sigmoid', W_regularizer=reg))
model.compile(loss='binary_crossentropy', optimizer='adam')
model.fit(x=x_train, y=y_train, epochs=1, validation_data=(x_val, y_val), callbacks=[early_stopping])
# Save the model
model.save('./model.h5')
之后加载如下:
from keras.models import load_model
model = load_model('./model.h5')
并开始重新训练或使用模型进行推理。请注意,您还可以使用 save_weights()
方法仅存储权重。有关完整文档和更多示例,请参阅 Keras website。
我正在尝试使用此代码通过 Keras 拟合 ANN,然后对其进行 pickle:
early_stopping = EarlyStopping(monitor='val_loss', patience=4, mode='auto')
model = Sequential()
model.add(Dense(units=40, kernel_initializer='random_uniform', input_dim=x_train.shape[1], activation='relu'))
model.add(Dense(units=1, kernel_initializer='random_uniform', activation='sigmoid', W_regularizer=reg))
model.compile(loss='binary_crossentropy', optimizer='adam')
model.fit(x=x_train, y=y_train, epochs=1, validation_data=(x_val, y_val), callbacks=[early_stopping])
pickle_file_and_path = 'C:/Bla/DLModel20180816.sav'
pickle.dump(model, open(pickle_file_and_path, 'wb'))
不幸的是,我得到:
pickle.dump(model, open(pickle_file_and_path, 'wb'))
TypeError: can't pickle _thread.RLock objects
有什么想法吗?
存储 Keras 模型的规范方法是使用内置的 model.save()
方法将模型保存到 HDF5 文件中。
调整您的代码:
model = Sequential()
model.add(Dense(units=40, kernel_initializer='random_uniform', input_dim=x_train.shape[1], activation='relu'))
model.add(Dense(units=1, kernel_initializer='random_uniform', activation='sigmoid', W_regularizer=reg))
model.compile(loss='binary_crossentropy', optimizer='adam')
model.fit(x=x_train, y=y_train, epochs=1, validation_data=(x_val, y_val), callbacks=[early_stopping])
# Save the model
model.save('./model.h5')
之后加载如下:
from keras.models import load_model
model = load_model('./model.h5')
并开始重新训练或使用模型进行推理。请注意,您还可以使用 save_weights()
方法仅存储权重。有关完整文档和更多示例,请参阅 Keras website。