逐渐地在你的PyTorch模型中添加fastai goodness
fastai.vision.all进口*

我们将使用官方PyTorch示例中的MNIST训练代码,稍微为空间重新格式化,从AdaDelta更新为AdamW,并从脚本转换为模块。这里有很多代码,所以我们将其放到migrating_pytorch.py中!

migrating_pytorch进口*

我们可以用fastai的循环完全替换定制的训练循环。这意味着你可以摆脱培训(),测试()和原始代码中的epoch循环,并将其替换成这样:

数据=DataLoaders(train_loader,test_loader)学习=学习者(数据,(),loss_func=Fnll_loss,opt_func=亚当,指标=精度,哥伦比亚广播公司=CudaCallback)

我们还增加了CudaCallback让模型和数据为我们移动到GPU。或者,你也可以使用fastaiDataLoader,它提供了PyTorch的功能的超集(使用相同的API),可以为我们处理将数据移动到GPU的操作(参见migrating_ignite.ipynb作为此方法的示例)。

fastai支持许多调度器。我们建议配合1周期训练:

学习fit_one_cycle(时代,lr)
时代 train_loss valid_loss 精度 时间
0 0.129090 0.052289 0.982600 00:17

如您所见,从纯PyTorch迁移允许您删除大量代码,并且不需要更改任何现有的数据管道、优化器、丢失函数、模型等。

一旦进行了此更改,您就可以从fastai丰富的回调、转换、可视化等等中获益。

请注意fastai不仅仅是一个训练循环(尽管我们在本例中只使用了训练循环)——它是一个完整的框架,包括gpu加速转换、端到端推理、视觉、文本、表格和协同过滤的集成应用程序等等。可以单独使用框架的任何部分,也可以将它们组合在一起,如fastai纸