【求助】使用 Jupyter 学习 MachineLearning 时遇见异常

学术专区 520 views 7 replies
#1 ·

在使用 jupyter 做深度学习作业时的时候出现了如下错误

File "C:\Users\Administrator\anaconda3\Lib\multiprocessing\spawn.py", line 122, in spawn_main
exitcode = _main(fd, parent_sentinel)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\anaconda3\Lib\multiprocessing\spawn.py", line 132, in _main
self = reduction.pickle.load(from_parent)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: Can't get attribute 'MyDataset' on <module 'main' (built-in)>

经查询疑似是在 windows 系统上使用多进程时报错 AttributeError,但代码内并未使用 multiprocessing,不知是否是 numworker 导致的错误

代码参考 李宏毅深度学习 2021 春 HW4 实验四,Strong Baseline,使用 Conformer_李宏毅老师深度学习语音预测 hw 如何 change transformer to conformer-CSDN 博客 的源码

#2 ·

PS:直接运行助教给的 simple baseline 的代码也出现同样报错

mod #3 ·
钰雪泠风,post:1, topic:13116, username:Snowindly:

但代码内并未使用 multiprocessing

看错误的文件路径:

File“C:\Users\Administrator\anaconda3\Lib\multiprocessing\spawn.py”, line 122, in spawn_main

显然是间接调用了 multiprocessing 的。我比较怀疑是 Windows 下 Python 创建子进程时地址空间的问题。

multiprocessing 模块官方文档应该有提到,Windows 下创建进程的方式是 spawn 而不是 fork,子进程不继承父进程地址空间,也许 get attribute 正是因此失败的。如果真是这个原因的话,由于 Windows 平台 Python 不支持 fork 创建子进程,我的建议是换到 POSIX 平台上运行。

#4 ·

undefined

#5 ·

经实践,用 pycharm 直接运行代码可行,但是仍未找到如何在 jupyter 上运行的方法

#6 ·
Snowindly 钰雪泠风

futurewarning 让人看着很难受

#7 ·
Snowindly 钰雪泠风

说明 codebase 太老了,应该降级依赖