请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答

1回答

正十七 2020-02-16 23:31:50

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

这个问题的根源在于,使用多线程后,需要给子线程分发参数,对于有无法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 回复 有任何疑惑可以回复我~
  • 老师请问这个问题解决了吗
    回复 有任何疑惑可以回复我~ 2020-05-05 15:03:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信