类型错误:从 Keras-Openface 项目转储模型时无法腌制 _thread.lock 对象nn4_small2_pretrained



我试图使用Keras-Openface项目的预训练模型来实现面部识别,Martin Krasser 在这里进行了令人惊讶的解释和暗示

OpenFace项目提供了预先训练的模型,这些模型是用公共人脸识别数据集FaceScrub和CASIA-WebFace训练的。Keras-OpenFace 项目将预先训练的 nn4.small2.v1 模型的权重转换为 CSV 文件,然后在此处转换为二进制格式,Keras 可以使用load_weights加载

代码很简单:

nn4_small2_pretrained = create_model()
nn4_small2_pretrained.load_weights('weights/nn4.small2.v1.h5')

在转到错误以更深入地了解 create_model(( 中发生的事情之前,您可以在此处浏览代码

现在我需要在我的predict.py文件中nn4_small2_pretrained(它最初是训练我的自定义图像 train.py 的一部分(,但是如果我这样做

from train import nn4_small2_pretrained

或者编写代码

nn4_small2_pretrained = create_model()
nn4_small2_pretrained.load_weights('weights/nn4.small2.v1.h5')

再来一次,然后预测文件需要花费大量时间来编译,因为它再次经历整个过程。因此,为了解决这个问题,我尝试将模型转储到像这样的泡菜文件中

# Save the nn4 pretrained model to pickle file
f = open('pretrained_model.pickle', 'wb')
pickle.dump(nn4_small2_pretrained, f)

当我运行代码时,它给了我这个错误

File "train.py", line 24, in <module>
pickle.dump(nn4_small2_pretrained, f)
TypeError: can't pickle _thread.lock objects

我最近开始使用Deel Learning Models和Pickle,我不知道出了什么问题。 任何帮助将不胜感激。

谢谢。

我看到create_model()创建了Keras模型的实例。如果是 Keras 模型,则可以使用model.save(filepath)保存模型。 有关其他选项,请参阅此链接。

相关内容

最新更新