You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:27:56