【问题标题】:How do I use pickle in this code snippet?如何在此代码段中使用 pickle?
【发布时间】: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 可以顺利运行,但它让我付出了代价。

【问题讨论】:

标签: python tensorflow machine-learning pickle data-science


【解决方案1】:

您使用的是哪个版本的 keras?我几乎可以肯定旧版本不支持pickle。

或者,建议使用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

【讨论】:

  • 非常感谢胜利者。
猜你喜欢
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 2021-11-29
相关资源
最近更新 更多