Python 获得';can';t pickle _thread.RLock对象';当尝试存储神经网络时

Python 获得';can';t pickle _thread.RLock对象';当尝试存储神经网络时,python,neural-network,keras,persistence,pickle,Python,Neural Network,Keras,Persistence,Pickle,我目前正在训练一个神经网络,我试图存储训练过的模型以备将来使用。该模型基于keras中的顺序(见下文)。我正在使用joblib.dump(model,output\u file\u gen)来存储信息。但是,我收到了错误消息: TypeError: can't pickle _thread.RLock objects. 我看过一些关于这个错误消息的StackOverflow帖子,它似乎与多线程有关。我不确定模型中发生了什么,但也许有人可以给我建议如何存储模型,或者采取措施消除这个错误,或者建议

我目前正在训练一个神经网络,我试图存储训练过的模型以备将来使用。该模型基于
keras
中的
顺序
(见下文)。我正在使用
joblib.dump(model,output\u file\u gen)
来存储信息。但是,我收到了错误消息:

TypeError: can't pickle _thread.RLock objects.
我看过一些关于这个错误消息的StackOverflow帖子,它似乎与多线程有关。我不确定模型中发生了什么,但也许有人可以给我建议如何存储模型,或者采取措施消除这个错误,或者建议更好的方法存储神经网络

NN设置包括在下面:

model = Sequential()

model.add(Dense(256, input_dim=self.latent_dim))
model.add(LeakyReLU(alpha=0.2))
model.add(BatchNormalization(momentum=0.8))
model.add(Dense(512))
model.add(LeakyReLU(alpha=0.2))
model.add(BatchNormalization(momentum=0.8))
model.add(Dense(1024))
model.add(LeakyReLU(alpha=0.2))
model.add(BatchNormalization(momentum=0.8))
model.add(Dense(np.prod(self.img_shape), activation='tanh'))
model.add(Reshape(self.img_shape))

不建议使用pickle或cPickle保存Keras模型。这是此处错误的原因(理由不充分)

您可以使用
model.save(filepath)
将模型保存到单个HDF5文件中,该文件将包含:

  • 模型的体系结构,允许重新创建模型
  • 模型的权重
  • 培训配置(丢失、优化器)
  • 优化器的状态,允许在您停止的位置恢复培训
  • 然后可以使用
    keras.models.load\u model(filepath)
    重新实例化/重新加载模型

    上述操作将占用大量磁盘空间。因此,也可以保存模型权重。有关更多详细信息,请参阅