TypeError:无法pickle NotImplementedType对象(在keras,python中)

时间:2018-05-29 05:41:49

标签: python keras pickle

我正在使用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的类型错误吗?

它也是相同的环境,但我不知道为什么它在不同的目录中的工作方式不同。

如果你能为我解决这个问题,我会很感激。

1 个答案:

答案 0 :(得分:1)

保存multi-gpu模型时,Keras文档建议您调用 base 模型的save(fname)save_weights(fname)方法,而不是{{1 (请参阅页面底部的here)。

我会将您的multi_gpu_model分配给新变量,而不是重新分配multi_gpu_model。这样您就可以轻松引用可用于保存权重的基本模型。