TypeError: can't pickle _thread.lock objects (第6章,训练 cifar10数据 预测时报错)

来源:6-13 模型训练与预测

jandy_chen

2020-01-11

如下截图:(这个数据集,我用有一个普通的1070GPU 训练30个epochs 大概用了45分钟,use_multiprocessing =True 时,报如下截图错误,请问如何解决????。。当我把 它设为false 这一步好几个小时也过不去,,进展什么情况也不知,我去看文档有个 verbose参数,设置了也没有运行过程的可以显示),另请问有一下,您works=10 时,这一步执行30万张图片的预测大概花费多长时间???
图片描述

写回答

1回答

正十七

2020-02-16

同学你好,抱歉晚回复了。

这个问题的根源在于,使用多线程后,需要给子线程分发参数,对于有无法pickle的参数的generator,就会报这个错误。https://stackoverflow.com/questions/56447556/typeerror-cant-pickle-thread-lock-objects-when-training-keras-model

然后看代码中的文档:https://github.com/tensorflow/tensorflow/blob/v2.1.0/tensorflow/python/keras/engine/training.py#L1268-L1306

也是类似的说法,需要generator中的参数可以pickle。

个人感觉是tf.keras里的generator实现的有问题,也试了不少方法想解决,还没有成功。先回复你一下。如果解决了再来更新。

我用的P100,没有试多线程,印象中单线程已经挺快的了,具体可能是半个小时左右(有点记不清了)。

1
1
manbaneverout
老师请问这个问题解决了吗
2020-05-05
共1条回复

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程