1.背景
最近在学李沐老师的《动手学深度学习》,有一个d2l包由于时间原因,安装起来容易报错,查了一些资料,看到一些很麻烦的,但经过尝试发现其实单纯的就是环境依赖不匹配问题。
d2l相当于一个收集函数的包,只要在一个py文件中定义函数def func():
时在冒号后加上了注释#@save
,那就可以在另一个任意路径的py文件下以d2l.pytorch.func
调用这个函数。
我遇到的问题如下:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[11], line 3
1 num_epochs, lr = 10, 0.1
2 updater = torch.optim.SGD(params, lr=lr)
----> 3 d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, updater)
AttributeError: module 'd2l.torch' has no attribute 'train_ch3'
2.问题原因
可能有两个原因:
① python版本太高,建议按照当时编书时李沐老师用的3.8版本python(但这个可能很小)
② 主要原因,d2l版本号太高,查看自己的d2l版本号是不是大于1了,需要卸载并安装0.17.5版本
这里我建议在当前环境下用这条命令即可(如果还没pip过d2l那直接执行也是一样的):
pip install d2l==0.17.5
(再提一嘴,跑这条命令的时候不要开魔法)
3.参考
参考来自github上关于d2l的issue:d2l-issue
如果还是报错,那就新建一个虚拟环境,用python3.8,下载0.17.5版本的d2l就行了。