【求助】使用 Jupyter 学习 MachineLearning 时遇见异常
在使用 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 导致的错误
PS:直接运行助教给的 simple baseline 的代码也出现同样报错
但代码内并未使用 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 平台上运行。

经实践,用 pycharm 直接运行代码可行,但是仍未找到如何在 jupyter 上运行的方法
futurewarning 让人看着很难受
说明 codebase 太老了,应该降级依赖