使用pytorch时,遇到Can‘t pickle local object ‘xxx.<locals>.<lamba>‘的问题,注释有关部分有EOFError: Ran out of input问题

如图,出现报错Can’t pickle local object ‘xxx..’

使用pytorch时,遇到Can‘t pickle local object ‘xxx.<locals>.<lamba>‘的问题,注释有关部分有EOFError: Ran out of input问题_第1张图片

直接按照报错信息查网上,有许多可能的解答,有

pickle有限制,无法解析我模型文件中的lambda表达式

pickle可以将python对象转化为字节流,该字节流可以存储为文件,或用于通信,
而主进程fock子进程时,通过将上下文(context)转化为pickle对象,传递给子进程。问题就出在这里,不是任何对象都可以进行pickle操作,具体可见pickled
list。

等等很多解答,但始终对应于项目中找不到问题所在或不知如何改正。
将有关这部分代码内容注释后,出现EOFError: Ran out of input。

按照报错栈信息最后一行所指位置,如图。
使用pytorch时,遇到Can‘t pickle local object ‘xxx.<locals>.<lamba>‘的问题,注释有关部分有EOFError: Ran out of input问题_第2张图片

搜索该函数的有关内容,找到了一个类似的错误求助,其中解决方法
https://ask.csdn.net/questions/7711861,如图

使用pytorch时,遇到Can‘t pickle local object ‘xxx.<locals>.<lamba>‘的问题,注释有关部分有EOFError: Ran out of input问题_第3张图片
按照答主所说的位置更改了项目中的num_workers=0使用pytorch时,遇到Can‘t pickle local object ‘xxx.<locals>.<lamba>‘的问题,注释有关部分有EOFError: Ran out of input问题_第4张图片
最后运行成功了,具体工作原理尚不清楚,仅作纠错记录。

你可能感兴趣的:(python,深度学习,pytorch)