Welcome to fastai

fastai库使用现代最佳实践简化了快速而准确的神经网络的训练. 它基于对fast.ai进行的深度学习最佳实践的研究 ,包括对visiontexttabularcollab (协作过滤)模型的"开箱即用"支持. 如果您正在寻找源代码,请转到 GitHub上的fastai存储库 . 有关简短的示例,请参见examples文件夹. 完整的文档中提供了详细的示例(请参见侧栏). 例如,以下是使用resnet18训练MNIST模型的方法(来自视觉示例 ):

path = untar_data(URLs.MNIST_SAMPLE)
data = ImageDataBunch.from_folder(path)
learn = cnn_learner(data, models.resnet18, metrics=accuracy)
learn.fit(1)
总时间:00:09

时代 train_loss 有效损失 准确性
1个 0.128580 0.082647 0.973503

Installation and updating

要安装或更新fastai,我们建议conda

conda install -c pytorch -c fastai fastai

有关故障排除和替代安装(包括pip和仅CPU选项),请参见fastai自述文件 .

Reading the docs

为了快速入门,请单击侧栏上的" 应用程序 ",然后选择您感兴趣的应用程序.这将带您逐步学习如何训练该类型的模型. 然后,您可以从那里探索各种链接,也可以更深入地研究各种fastai模块.

我们在下面提供了该库中关键模块的快速摘要. 有关每个模块的详细信息,请使用侧栏找到您感兴趣的模块.每个模块都包括概述和使用方法示例,以及每个类,函数和方法的文档. API文档看起来像这样:

An example function

rotate[source][test]

rotatedegreesuniform )→ Image :: TfmAffine

rotate测试:

  • pytest -sv tests/test_vision_transform.py::test_deterministic_transforms [source]

要运行测试,请参阅本指南 .

degrees旋转图像.


Types for each parameter, and the return type, are displayed following standard Python type hint syntax. Sometimes for compound types we use type variables. Types that are defined by fastai or Pytorch link directly to more information about that type; try clicking Image in the function above for an example. The docstring for the symbol is shown immediately after the signature, along with a link to the source code for the symbol in GitHub. After the basic signature and docstring you'll find examples and additional details (not shown in this example). As you'll see at the top of the page, all symbols documented like this also appear in the table of contents.

对于继承的类和某些类型的修饰函数,基类或修饰符类型也将显示在签名的末尾,以::分隔. 对于vision.transforms ,将显示用于数据扩充的随机数生成器,而不是用于随机生成的参数的类型.

Module structure

Imports

fastai旨在支持交互式计算以及传统软件开发. 对于交互式计算,将便利性和实验速度放在首位,数据科学家通常更喜欢使用import *来获取所需的所有符号. 因此,fastai旨在支持这种方法,而不会影响可维护性和理解力.

为了做到这一点,对模块的依赖关系进行了仔细的管理(请参阅下一节),在使用import *时,每个模块的依赖关系都会导出一组精心选择的符号. 通常,对于交互式计算,只需围绕核心模块和培训循环进行操作即可

from fastai.basics import *

如果您想尝试视觉等应用程序之一,则可以

from fastai.vision import *

这将为您提供所有您需要的标准外部模块,包括它们的惯用名称空间(例如pandas as pdnumpy as npmatplotlib.pyplot as plt ),以及核心fastai库. 此外,为您的应用程序(主类和函数fastai.vision ,在这种情况下),例如创建DataBunch从图像文件夹中,并培养了卷积神经网络(与cnn_learner ),也是进口的. 如果您不想导入任何应用程序,但想要从fastai中获得所有主要功能,请from fastai.basics import * . 当然,您也可以仅导入所需的特定符号,而无需使用import * .

如果希望查看从哪里导入符号,则只需键入符号名称(在REPL中,如Jupyter Notebook或IPython),或(在大多数编辑器中)将鼠标移到符号上即可查看定义. 例如:

Learner
fastai.basic_train.Learner

Dependencies

一切的基础是两个模块coretorch_core (在这些文档中命名模块时,我们不包括fastai.前缀). 它们定义了我们在库中使用的基本功能; core仅依赖于通用模块,而torch_core需要pytorch. 大多数类型提示快捷方式也在其中定义(至少一个不依赖于稍后定义的fastai类的快捷方式). 下面几乎所有模块都导入torch_core .

然后,直接在torch_core顶部有三个模块:

这要照顾到基础知识,然后我们将模型与一些数据组合在Learner对象中以进行训练. 进一步来说:

  • callback (取决于basic_data )定义了回调和CallbackHandler的基础. 这些功能将在训练循环的每个步骤中调用,并且可以使我们自定义那里发生的事情;
  • basic_train (取决于callback )定义了LearnerRecorder (这是一个记录训练统计信息的回调)并具有训练循环;
  • callbacks (取决于basic_train )是一个定义各种回调的子模块,例如用于混合精度训练或1cycle退火;
  • train (取决于callbacks )定义了辅助函数,以更轻松地调用回调.

basic_data我们可以划分为四个主要应用程序之一 ,每个应用程序都有自己的模块: visiontext collabtabular . 这些子模块中的每一个都以相同的方式构建:

  • 一个名为transform的子模块,用于处理数据的转换(用于计算机视觉的数据增强,用于文本的数字化和标记化以及用于表格的预处理)
  • 一个名为data的子模块,其中包含将创建特定于此应用程序的数据集的类以及用于创建DataBunch对象的辅助函数.
  • 一个名为models的子模块,其中包含此应用程序特定的模型.
  • (可选)名为{application}.learner的子模块,其中将包含特定于该应用程序的Learner器.

这是关键模块依赖关系的图形:

Modules overview