fastai教程学习笔记

这几天对着fastai教程读了下,大部分写得已经很不错。这里做点知识精炼的笔记。

安装fastai

推荐在conda环境内执行以下命令。它

pip install fastai

fastai架构

fastai的编程架构如下图所示:
fastai教程学习笔记_第1张图片

fastai提供了高、中、低三层的API,用户可以根据自己的需求在合适的层面上开发。用户的需求越定制化,则使用的API越底层。用户对框架越熟悉,其越有能力基于底层的API进行开发。

通过谷歌搜索"fastai xxx"可以搜索API的文档,比如搜索"fastai untar_data",你可以看到untar_data的文档。

在高层API的帮助下,fastai能支持对各种领域的问题快速建模,包括计算机视觉(vision)、自然语言处理(text)、表格分析(Tabular)、推荐系统(Collab)。如果想使用中层、底层的API,同样也有提供教程。

fastai导读

首先,分析fastai的目录结构如下图所示。

  • 第一个红框,Quick start。给出了cv、nlp经典问题领域的样例代码,它们都使用了fast高层的API,代码行数只需十几行。
  • 第二个红框,Tutorials。给出了更详尽的代码教程,既包括使用高层API解决各领域问题的教程,也包括基于底层API开发的教程。
  • 第三个红框,Training、Data等等。给出了fast各个模块的接口文档。教程中使用的各种接口,都能在此处找到文档解释。

所以,推荐的阅读顺序是,先把Quick start的notebook运行一下,了解基本用法,再阅读Tutorials的各种教程。所有教程的notebook都可见于fastai/nbs
fastai教程学习笔记_第2张图片

Computer vision intro

Text transfer learning

该例子用了以下迁移学习流程。

  1. 将模型在wiki词库作next-word prediction训练。笔者认为这样能让模型能学习英语语法。
  2. 将上一步的模型迁移到IMDb上作next-word prediction训练。笔者认为这样能让模型学习影评的语言风格。
  3. 最后将上一步的模型迁移到IMDb作分类训练。

fastai教程学习笔记_第3张图片

fastai 部分接口理解

Item_tfms vs batch_tfms

参考Item_tfms vs batch_tfms可知,所有图片会先各自按照Item_tfms在CPU处理,再送入GPU按照batch_tfms处理。

Because we can separate how each one works and where it’s applied. In fastai v1 everything was CPU bound as well.
Again, two seperate ones are needed because the item transforms are all done on the CPU and batch are all on the GPU
And we need these CPU-bound item transforms so everything can be put into a batch and be allowed to be pushed to the GPU

总结

个人觉得,其最大的价值在于:

  1. 包装了fine_tune方法,用户可以很方便地作迁移学习,比如从一个训练好的resnet迁移到新的小数据集上
  2. 包装了learn.lr_find()方法,用户可以找到最佳的学习率
  3. 包装了learn.show_results()方法,可以快速查看预测结果
  4. 包装了interp.plot_top_losses(9, figsize=(15,10))方法,可以查看模型最差表现的样例

但是它也有局限性:

  1. 其提供的数据读取接口DataLoaders等等,完全可以被更简单的原生pytorch的Dataloader和collate_fn取代
  2. 其提供的数据集接口untar_data、URLs.IMDB等等,完全可以被torchvision和hugginface取代

延伸阅读Walk with fastai

你可能感兴趣的:(AI与ML,学习,深度学习,人工智能)