前言
fast.ai是一个深度学习的框架。它使用起来非常简单,是一种开箱即用的深度学习库。提供了海量的模型封装,还提供了一些pre-training的模型。开发者设计模型代价降低,还可以做一些迁移学习的研究。它也是一个开源的项目。官方Github。
简单来说就是为了让大家快速的搭建模型,设计模型,这也是名称的由来。
本人使用到fasi.ai解决的主要需求就是快速搭建baseline模型,无论是写论文还是设计算法需要一些baseline对比佐证自己设计的算法优势。现在的网络结构越来越复杂,有时候搭建baseline并不是一件容易的事情。在此之前本人喜欢用keras+tensorflow。而fast.ai可以理解为以pytroch为后端的前端框架,这是我的使用感觉。废话不多说,直接上教程。
(注意:现在国内网络上大多数是fast.ai 0.7的版本,我使用的是fast.ai 1.0的正式版。区别还是比较大的。)
安装
再次强调这个安装过程只对于fast.ai v1.0及以上版本。
conda
这是本人强烈推荐的一种安装方式。Anaconda是一种管理 python 版本以及外部依赖库的工具。安装之后已经提供了海量的包。通过conda一系列命令可以创建python虚拟环境,下载包文件等。
安装Anancoda
Anancoda 官网 https://www.anaconda.com/。下载对应版本的安装文件即可。
这里需要强调的是fast.ai v1.0需要Python> 3.6版本,所以我们选择Python 3.6 的版本。本人使用的是linux的服务器。使用
wget https://repo.continuum.io/archive/Anaconda3-2018.12-Linux-x86_64.sh
得到.sh脚本文件之后,使用命令。
bash Anaconda3-2018.12-Linux-x86_64.sh
然后一路回车,手速不要太快,这里有两个地方需要你输入yes。
第一个是同意条款,输入yes后回车。
需要注意的是第二个yes,意思是需不需要把Anaconda加入系统的环境变量中。
- yes Anaconda会加入到系统的配置文件中,带来的结果是,在系统目录下使用python命令,会自动启动Anaconda中的python。而不是系统的自带的。简单来说就是取代了你系统中的Python,这意味着你之前的项目的环境会发生变化,带来的好处是可以使用conda命令了。
-
no 以后可以自己手动加入系统变量中,但是在没加入系统变量之前使用不了conda的命令了,并且需要使用其中的python也相对来说比较烦。
我这里选择的yes。看客可以自行选择。
安装成功后使用
conda list
如果没有报错就恭喜安装成功了。
为了下面步骤的进行。
需要把conda升级。
conda update conda
这里需要漫长时间检查环境配置的依赖关系,不要管它,也不要终止。升级成功后即可进行下面的步骤。
安装fastai
这里额外要注意服务器的CUDA版本要与pytroch cuda的版本相同即可(没有GPU的“贫民玩家”请忽略直接安装就可以了)。
如果大家的服务器CUDA版本是9.0以上。
直接使用命令
conda install -c pytorch -c fastai fastai
出去逛个街啥的估计就能够成功安装。(逛街之前需要输入一下yes),在这一步conda有可能改变python的版本,别慌。
但是有的童鞋的CUDA版本比较低怎么办?
首先需要确认CUDA的版本,然后使用命令。
比如说CUDA版本是8.0 那么就。
conda install -c pytorch pytorch cuda80
CUDA版本是10.0那么就
conda install -c pytorch pytorch cuda100
然后通过命令
conda install -c fastai fastai
它的安装相对来说也比较简单,但是如果你需要安装fast.ai <1.0版本的可不一样了。
pip安装
说实话,折腾了很久,我没有成功过,这里给出参考。大家成功了可以留言。(注意,给出的链接并非官方提供)
其他
在官方Github的README.md文件写的比较详细。
小例子
为了验证我们是否强烈建议大家使用jupyter玩fast.ai。fast.ai自带训练过程展示,看起来很高端炫酷。
启动jupyter-notebook
jupyter-notebook
如果服务器没有图形化的浏览器。可以通过下面命令把jupter-notebook暴露给外部浏览器访问。
jupyter-notebook --ip 0.0.0.0
会生成
http://0.0.0.0:8888/?token=f52ff040e4dc7d39b58ae1c9cb96d6******
把0.0.0.0改为服务器Ip,复制到浏览器即可访问。
比如服务器IP 10.89.198.1,URL为。
http://10.89.198.1:8888/?token=f52ff040e4dc7d39b58ae1c9cb96d6******
新建一个python文件
导入包
如果大家真的想学习的话,需要弄清楚每个方法,每个类在哪个包里,这是比较重要的。有兴趣看一下源码会更好。
这个小例子用到的包就这么多。
from fastai.datasets import untar_data
from fastai.datasets import URLs
from fastai.vision.data import ImageDataBunch
from fastai.vision.learner import create_cnn
from fastai.vision import models
from fastai.metrics import accuracy
下载数据集
经典的mnist数据集
path = untar_data(URLs.MNIST_SAMPLE) # 数据存放在 ~/.fastai/dataz中
数据处理
data = ImageDataBunch.from_folder(path)
建立模型
这里直接使用的是resnet18,它会自动下载pretrained resnet18 model的网络结构
learn = create_cnn(data, models.resnet18, metrics=accuracy) #文件存放在 ~/.torch/models
训练模型
learn.fit(1) #1 是一个epoch
结果
后语
fast.ai 用于快速构建并且训练模型,所需代码量少,逻辑简单。
代码在Github上,喜欢就关注一下,持续更新新技术和项目。
https://github.com/SkullFang/Share-Technology/blob/master/fastai/fastai-demo_one.ipynb