![](/img/trans.png)
[英]Python: How do I use this code snippet to append text to the next line?
[英]How do I use pickle in this code snippet?
我有一个简单的代码片段来训练模型,但是当我使用pickle保存模型以备将来使用时,它给我一个错误消息:
cannot pickle thread.LOCK objects
我用了多种格式的泡菜,但它给了我同样的错误。
import pickle
model = keras.Sequential([
keras.layers.Dense(SHAPE, input_shape=(SHAPE,)),
keras.layers.Dense(300, activation='sigmoid'),
keras.layers.Dense(10, activation='softmax')
])
#****************** COMPILING THE MODE *****************
LEARNING_RATE = 0.0005
model.compile(optimizer=keras.optimizers.Adam(lr=LEARNING_RATE),
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
# *********** TRAINING THE MODEL **********
EPOCHS = 20
BATCH_SIZE=50
history_original_data = model.fit(X_original_train_images, y_original_train_labels, epochs=EPOCHS, batch_size=BATCH_SIZE)
hist_original=history_original_data.history
### PICKLE TO SAVE THE MODEL TO BE USED WITHOU PRO-TRAINING IT
pickname ="SequentialNeuroNetwork.pkl"
PickleSeq = open(pickname, 'wb')
pickle.dump(model, PickleSeq)
PickleSeq.close()
我期望上面的代码段可以平稳运行,但是却使我付出了代价。
您正在使用哪个版本的keras? 我几乎可以肯定,旧版本不支持泡菜。
另外,建议使用model.save()
将模型保存在keras中。 正如keras常见问题页面中所述:
您可以使用model.save(filepath)将Keras模型保存到单个HDF5文件中,该文件包含:
- 模型的架构,从而可以重新创建模型
- 模型的权重
- 训练配置(损失,优化器)
- 优化程序的状态,从而可以从您上次中断的地方继续正确地进行训练。
然后,您可以使用
keras.models.load_model(filepath)
重新实例化模型。 load_model还将负责使用保存的训练配置来编译模型(除非从未首先编译过模型)。
资料来源: https : //keras.io/getting-started/faq/#how-can-i-save-a-keras-model
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.