d2l框架中带#@save注解的train_ch3函数无法跨Notebook导入的问题求助
d2l框架中带#@save注解的train_ch3函数无法跨Notebook导入的问题求助
我最近跟着Dive into Deep Learning(也就是d2l框架)做练习,想把train_ch3函数用#@save注解保存下来,这样其他Notebook也能调用它。但奇怪的是,明明加了注解,也正确导入了d2l包,在另一个Notebook里用from d2l import train_ch3就是导不进来。
其他带#@save注解的函数比如train_epoch_ch3、evaluate_accuracy都能正常调用,唯独这个train_ch3不行。下面是我的train_ch3函数代码:
def train_ch3(net, train_iter, test_iter, loss, num_epochs, updater): #@save """Train a model (defined in Chapter 3)""" animator = Animator(xlabel='epoch', xlim=[1, num_epochs], ylim=[0.3, 0.9], legend=['train loss', 'train acc', 'test acc']) for epoch in range(num_epochs): train_metrics = train_epoch_ch3(net, train_iter, loss, updater) test_acc = evaluate_accuracy(net, test_iter) animator.add(epoch + 1, train_metrics + (test_acc,)) train_loss, train_acc = train_metrics assert train_loss < 0.5, train_loss assert train_acc <= 1 and train_acc > 0.7, train_acc assert test_acc <= 1 and test_acc > 0.7, test_acc
我在另一个Notebook里是这么导入的:
from d2l import train_ch3
结果直接报这个错误:
ImportError: cannot import name 'train_ch3' from 'd2l' (unknown location)
我已经排查过的点:
- 其他带
#@save的函数都正常:像train_epoch_ch3和evaluate_accuracy加了注解后都能顺利导入使用; - d2l包是最新的:我已经用
pip install --upgrade d2l更新过了; - 定义函数的单元格已经执行:我确认过写
train_ch3的那个Notebook单元格已经运行过了。
想请教一下,为什么train_ch3加了#@save还是没法被识别导入?是不是我对#@save的用法或者d2l包的机制有什么误解?
备注:内容来源于stack exchange,提问作者mustbeasaltyfish
相关产品推荐
相关产品推荐

