使用 fastai 点燃训练

逐步将 fastai 的优点添加到您的 Ignite 训练中

我们将使用 Ignite 示例目录中的 MNIST 训练代码(截至 2020 年 8 月),并将其转换为一个模块。

注意

如果您从 git 克隆了 fastai 仓库,migrating_ignite 的源脚本位于此文件夹的 examples 子目录中;如果您使用 Colab 等在线查看器,则可以从此处下载。

from migrating_ignite import *

from fastai.vision.all import *

要在 fastai 中使用它,我们首先将模块中的 DataLoaders 提取到一个 DataLoaders 对象中。

data = DataLoaders(*get_data_loaders(64, 128)).cuda()

我们现在可以创建一个 Learner 并进行训练。

opt_func = partial(SGD, momentum=0.5)
learn = Learner(data, Net(), loss_func=nn.NLLLoss(), opt_func=opt_func, metrics=accuracy)
learn.fit_one_cycle(1, 0.01)
周期 训练损失 验证损失 准确率 时间
0 0.999266 0.597913 0.856200 00:22

如您所见,从 Ignite 迁移使我们将 52 行代码(在 run() 中)替换为仅 3 行,并且无需更改您现有的任何数据管道、优化器、损失函数、模型等。完成此更改后,您就可以受益于 fastai 丰富的回调、变换、可视化等功能。

请注意,fastai 与 Ignite 非常不同,它不仅仅是一个训练循环(尽管在此示例中我们只使用了训练循环),它是一个完整的框架,包括 GPU 加速的变换、端到端推理、集成的视觉、文本、表格和协同过滤应用等。您可以单独使用框架的任何部分,也可以将它们组合在一起,正如fastai 论文中所述。