Fastai-简介

Fastai-简介简单介绍Fastai这一基于PyTorch的深度学习框架。


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Fastai简介

简介

Fastai是一个课程平台,一个讨论社区,同样也是一个基于PyTorc的顶层框架。Fastai的理念就是让神经网络没那么望而生畏,其课程也是采用项目驱动的方式教学。(不同于很多深度学习课程先教授大量的数学基础,各有利弊。)

目前fastai只在Linux下稳定,mac和windows下不保证稳定性。Fastai类似Keras,封装顶层框架,对新手比较友好。Keras的后端框架为TensorFlow和Theano等,而Fastai的后端为PyTorch。而且,类似Keras,Fastai不只是将PyTorch功能封装了比较“亲切”的API,而是让PyTorch的强大之处易用了。

在Kaggle等深度学习竞赛平台上,Fastai逐渐崭露头角。这主要归功于Fastai设计之初就是一个交互式环境支持友好的框架,例如对Jupyter的支持。

安装

conda/pip install fastai

注意:目前最新版均为1.x稳定版,均依赖pytorch1.0及以上,安装使用conda/pip install torch。

模块

下图是官方给出的核心模块的依赖关系。暂时不理解没关系,用了几次就明白了,和Keras还是很类似的。不同于其他的顶层深度学习框架,Fastai的模块是安装任务类型划分的,例如fastai.vison模块下就包含了视觉方面包括数据准备、模型构建、训练等API。

在这里插入图片描述

在Fastai的设计中,主要有四大应用领域,对应的四个模块名为collab(协同过滤问题)、tabular(表格或者结构化数据问题)、text(自然语言处理问题)以及vision(计算机视觉问题)。本系列所有文章围绕都是图像数据进行处理,也就是说主要使用vision模块。

快速开始

下面给出官方的快速入门代码

from fastai.vision import models, URLs, ImageDataBunch, cnn_learner, untar_data, accuracy

path = untar_data(URLs.MNIST_SAMPLE)  # 下载数据集,这里只是MNIST的子集,只包含3和7的图像,会下载并解压(untar的命名原因)到/root/.fastai/data/mnist_sample(如果你是root用户)下,包含训练数据,测试数据,包含label的csv文件
data = ImageDataBunch.from_folder(path)  # 利用ImageDataBunch读取文件夹,返回一个ImageDataBunch对象
learn = cnn_learner(data, models.resnet18, metrics=accuracy)  # 构建cnn模型,使用resnet18预训练模型
learn.fit(1)  # 训练一轮

上面的代码我已经详细备注。

关键步骤

在实际使用时,深度学习项目(尤其比赛)一般关注三个过程。

  • 数据集加载
  • 模型(预训练模型)
  • 训练过程(验证集。测试集评价)

Fastai最核心的数据集加载类为ImageDataBunch,它的几个方法都是去处理常见的数据集存储模式的(如csv+train+test)。底层类为DatasetBase继承自Pytorch的Dataset类,具体后面讲解。Fastai在数据预处理上也有了比较大的改进,如数据增强做了优化。

Fastai包含了PyTorch中torchvision的预训练模型,包括resnet、vgg、densenet等,也有一些Fastai提供的模型,如resnext、inception等,需要在这个地址下载。

Fastai中的训练方法如fit一般有以下参数。

  • 设定加载预训练模型,可以选择加载的层数以及是否冻结训练参数
  • 设定训练batch_size和epochs
  • 设定optimizer
  • 设定callback函数实现训练过程回调(支持可视化,利用fastprogress)
  • 设定fastai提供或者自己定义的验证指标(metrics)
  • 设定训练tricks,例如lr_find和one cycle

补充说明

本文初步介绍Fastai框架,这是基于PyTorch的一个上层框架,是2019年以来一个流行的选择,官方文档地址给出,目前没有中文文档。具体代码见我的Github,欢迎star或者fork。关于Fastai更多文章可以查看我的专栏。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195864.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dropout和bagging_dropout总结「建议收藏」

    dropout和bagging_dropout总结「建议收藏」1.伯努利分布:伯努利分布亦称“零一分布”、“两点分布”。称随机变量X有伯努利分布,参数为p(02.dropout其实也是一种正则化,因为也把参数变稀疏(l1,原论文)和变小(l2,caffe实际实现)。只有极少的训练样本可用时,Dropout不会很有效。因为Dropout是一个正则化技术,它减少了模型的有效容量。为了抵消这种影响,我们必须增大模型规模。不出意外的话,使用Dropout时较佳…

    2022年5月4日
  • golang 2021 激活码【2021最新】

    (golang 2021 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS3…

    2022年3月22日
  • linux卸载系统自带jdk_win10自带虚拟机好用吗

    linux卸载系统自带jdk_win10自带虚拟机好用吗注:最小化安装不需要执行!!!rpm-qa|grep-ijava|xargs-n1rpm-e–nodepsrpm-qa:查询所安装的所有rpm软件包grep-i:忽略大小写xargs-n1:表示每次只传递一个参数rpm-e–nodeps:强制卸载软件…

    2022年10月1日
  • java集合系列——Map之TreeMap介绍(九)

    TreeMap是一个有序的key-value集合,基于红黑树(Red-Black tree)的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序,具体取决于使用的构造方法。

    2022年2月26日
  • WinHTTP 会话概览

    WinHTTP 会话概览WinHTTP会话概览TheMicrosoftWindowsHTTPServices(WinHTTP)exposesasetofC/C++functionsthatenableyourapplicationtoaccessHTTPresourcesontheWeb.Thistopicprovidesanoverviewofho

    2022年7月11日
  • aspice培训试题(软件测试教程)

    软件详细设计在ASPICE中代号是SWE3,处于V模型的左侧;软件测试则包含软件单元测试(SWE4),软件集成测试(SWE5)以及软件合格性测试(SWE6)三部分,处于V模型的右侧。下面我会比较详细地介绍一下各过程域的实施要点和迎审会面对的主要问题。软件详细设计软件详细设计要准备的第一份交付件就是:软件详细设计文档!文档的输入是软件的需求,内容应该涵盖数据结构定义,全局变量和宏定义描述,动态行为描述(任务/中断/需求方案分析等),每个函数的实现(输入/输出/返回/伪码等),详细设计评估(关键性、复杂

    2022年4月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号