Fastai-简介

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 虚拟机开启就会蓝屏的解决方法是_虚拟机无限蓝屏

    虚拟机开启就会蓝屏的解决方法是_虚拟机无限蓝屏VMware与win10(专业版)不兼容的问题前两天系统出了点问题,然后重置了系统,结果今天装VMware的时候发现一开虚拟机就蓝屏了。一、首先打开控制面板,找到启动或关闭Windows功能二、打开win+R,输入gpedit.msc三、打开控制面板>程序>查看已安装的更新,卸载最近的更新。总结前两天系统出了点问题,然后重置了系统,结果今天装VMware的时候发现一开虚拟机就蓝屏了。找了好些方法,重启了十几次电脑,后面才弄好提示:以下是本篇文章正文内容,下面案例可供参考一、首先打开控制

    2025年9月6日
    6
  • 深入浅出Yolo系列之Yolov5核心基础知识完整讲解

    大白在之前写过《Yolov3&Yolov4核心基础知识的完整讲解》:https://blog.csdn.net/nan355655600/article/details/106246625/对Yolov4的相关基础知识做了比较系统的梳理,但Yolov4后不久,又出现了Yolov5,虽然作者没有放上和Yolov4的直接测试对比,但在COCO数据集的测试效果还是很可观的。很多人考虑到Yolov5的创新性不足,对算法是否能够进化,称得上Yolov5而议论纷纷。但既然称之为Yolov5,也有很多非常不

    2022年4月6日
    213
  • git基本使用(超详细)[通俗易懂]

    git基本使用(超详细)[通俗易懂]git基本使用一:Git是什么?Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别?1.SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。2.Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个

    2026年2月5日
    3
  • 浅析javaIO的原理过程

    浅析javaIO的原理过程IO流用来处理设备之间的数据传输。Java程序中,对于数据的输入/输出操作以”流(stream)”的方式进行。是指从源节点到目标节点的数据流动源节点和目标节点可以是文件、网络、内存、键盘、显示器等等。java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。输…

    2022年5月2日
    43
  • Maven实战(四)——基于Maven的持续集成实践

    Maven实战(四)——基于Maven的持续集成实践

    2021年9月11日
    50
  • Qt QStringList的简单使用方法「建议收藏」

    Qt QStringList的简单使用方法「建议收藏」从QList继承而来,它提供快速索引为基础的接入以及快速插入和清除其成员函数用于操作这个字符串列表如append(),insert(),replace(),removeAll(),removeAt(),removeFirst(),removeLast(),andremoveOne()等1.  增加字符串  可以通过append(),或使用  QString

    2022年6月4日
    99

发表回复

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

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