【发布时间】:2019-07-11 10:28:00
【问题描述】:
我有一个简单的代码 sn-p 来训练模型,但是当我使用 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()
我原以为上面的代码 sn-p 可以顺利运行,但它让我付出了代价。
【问题讨论】:
-
您好!如果您也发布相应的错误消息,人们更倾向于帮助您(并且能够提供帮助)。请确保根据How to Ask 和minimal reproducible example 中的规则编辑您的帖子。
-
不建议将 keras 模型保存为 pickle 文件(sklearn 首选)。 Keras 模型应保存为 hdf5 文件。
标签: python tensorflow machine-learning pickle data-science