【问题标题】:TypeError: can't pickle NotImplementedType objects (in keras, python)TypeError:无法腌制 NotImplementedType 对象(在 keras、python 中)
【发布时间】:2018-05-29 05:41:48
【问题描述】:

我正在使用 Keras 进行深度运行。 但是学习后在存储模型的过程中出现了如下错误。

TypeError:无法腌制 NotImplementedType 对象

当我在另一个目录中运行相同的代码时没有问题。

下面的代码是导致错误的部分代码。

.... 

model.add(Dense(2, activation='relu'))

model.add(Dense(1, activation='sigmoid'))

model = multi_gpu_model(model, gpus=4)

model.compile(loss='binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])

model.fit(x_train,y_train,epochs = 3, batch_size =500)


scores = model.evaluate(x_test,y_test)

#print("%s:.2f%%"%(model.metrics_names[1], scores[1]*100))

model.save('/disk3/seaice/seaice_keras_model2.h5')

keras内部的存储方法是否出现pickle的类型错误?

也是同一个环境,但是不知道为什么在不同目录下效果不一样。

如果您能为我提供此问题的解决方案,我将不胜感激。

【问题讨论】:

  • 我在解决这个问题时发现了一些有趣的东西。当我第一次使用这个模型时,我使用了 25 亿个数据集。发生错误时,使用了 9000 万个数据集。
  • 于是我把模型的层数降了很多,又恢复正常了。如果模型太深,数据量太大,会不会出现这个问题?还是偶然解决了这个问题?

标签: python keras pickle


【解决方案1】:

保存多 GPU 模型时,Keras 文档建议您调用 base 模型的 save(fname)save_weights(fname) 方法,而不是 multi_gpu_model 的方法(参见 @987654321 @,在页面的最底部)。

我会将您的multi_gpu_model 分配给一个新变量,而不是重新分配model。这样一来,您就可以轻松参考您的基本模型,您可以使用它来节省权重。

【讨论】:

    猜你喜欢
    • 2017-12-18
    • 2020-04-07
    • 2019-05-11
    • 1970-01-01
    • 2019-10-20
    • 2018-04-14
    • 2017-10-23
    • 2019-03-12
    • 1970-01-01
    相关资源
    最近更新 更多