fastai教程学习笔记

news2024/9/24 17:20:47

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

安装fastai

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

pip install fastai

fastai架构

fastai的编程架构如下图所示:

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

Computer vision intro

Text transfer learning

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/137434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

73、【哈希表】leetcode——15. 三数之和(C++版本)

题目描述 原题链接:15. 三数之和 解题思路 本题的难点在于去重,针对两种不同的方式:双指针和Hash采用不同的去重判定条件。 1、去重的目标 要明确,去重的是重复三元组,而不是三元组里重复的数。 2、去重初步思路 …

商业与数据生态议题解读,Doris Summit 2022 分论坛议程介绍|即刻报名

Doris Summit 2022 将于1 月 6 -7 日在线上正式举办,本次峰会共分2 天进行,首日上午为主论坛:核心技术解析,下午为商业与数据生态分论坛,7 日全天为行业用户最佳实践案例。大会汇聚了来自全球顶尖云厂商、一线互联网企…

CoMER论文翻译

文章目录Abstract1、Introduction2、Related Work2.1 HMER Methods2.2 Coverage Mechanism3、Methodology3.1、Background3.2、CNN Encoder3.3、Positional Encoding3.4、Attention Refinement Module3.5、Coverage4 Experiments论文链接:https://arxiv.org/abs/220…

数字图像处理 图像对比度增强算法概览

一、图像对比度增强 图像对比度增强又叫作图像对比度拉伸或者直接称为点运算。图像亮度和对比度调整的目的之一是在合适的亮度上提供最大的细节信息,细节纹理的沟纹越深,图像越清晰。在图像处理中,图像对比度增强是最基本的、原理比较简单却很…

【前端】Vuex模块化和持久化应用示例

概述 Vuex作为VUE状态管理组件,能够将项目公共数据进行统一管理。而且可以按照不同的业务功能将数据状态分模块管理。另外,对于网页刷新导致Vuex状态丢失的问题可以使用vuex-persistedstate插件配置将数据保存在localStorage或者sessionStorage中。 本…

「Python|场景案例」如何给图片添加水印

本文主要介绍如何使用python的PIL库给图片增加水印 文章目录背景说明工具准备处理步骤源代码处理效果展示背景说明 当我们想给一些图片添加水印的时候,尤其是图片数量较多的时候,就可以使用python进行自动化处理。包括但不限于在自媒体上发布自己的各种…

如何使用自助式商业智能 (BI) 避免组织中的数据孤岛

许多组织都存在数据问题。当许多员工远程工作(或在混合环境中)并在多个位置使用多个设备访问公司数据时,他们正在处理信息过载问题。这只会加剧数据孤岛的问题。 数据孤岛正是它听起来的样子:孤立在一个孤立的用户/环境中的数据&…

jdk版本和Class编译版本对应关系

JDK version和class file version(Class编译版本号)对应关系 JDK 17 61, JDK 16 60, JDK 15 59, JDK 14 58, JDK 13 57, JDK 12 56, JDK 11 55, JDK 10 54, JDK 9 53, JDK 8 52, JDK 7 51, JDK 6.0 50, JDK 5.0 …

数据结构-归并排序

一、概念及其介绍 归并排序(Merge sort)是建立在归并操作上的一种有效、稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每…

三年“云改”,移动云这份答卷有多“硬”?

作者 | 曾响铃 文 | 响铃说 云计算是推动数字经济与实体经济深度融合的催化剂,是重点领域数字产业发展的助推器。近年来我国云计算产业发展提速,加快推动实体企业转型升级和创新发展。 2022年是移动云实施“云改”战略的第3年,也是移动云全…

【人工智能】基于五笔字型规范和人工神经网络的简中汉字识别【二】

环境搭建 一、NVIDIA驱动安装与更新二、Anaconda安装三、Pytorch安装四、验证CUDA和cudnn版本一、NVIDIA驱动安装与更新 显卡驱动就是用来驱动显卡的程序,它是硬件所对应的软件。 正常情况下,配有显卡的电脑都是安装有驱动程序的,但是有的时候驱动可能版本较低,所支持的 …

爬虫内容学习-工具类---Selenium

一、爬虫学习建议: 在编写python爬虫程序时,只需要做以下两件事: 发送GET请求,获取HTML [第一类] 解析HTML,获取数据 [第二类] 这两件事,python都有相应的库帮你去做,你只需要知道…

关乎你我,2022年都经历了哪些安全事件?|上云那些事

2022年,网络安全跟人们的工作生活关联愈发紧密。腾讯安全联合南方日报、南方,携手共建《上云那些事》栏目,为企业提供网络安全建设新思路,帮助大家及时发现身边的网络安全陷阱,提升安全意识和防范能力,减少…

论文阅读-虚假信息检测综述 - Fake News Detection on Social Media: A Data Mining Perspective

论文链接:https://arxiv.org/pdf/1708.01967.pdf 目录 摘要 1 引言 2. 假新闻定义 2.1 假新闻的定义 2.2 传统新闻媒体上的假新闻 2.3社交媒体上的假新闻 3.假新闻检测 3.1问题定义 3.2 特征提取 3.2.1 新闻内容特征 3.2.2 社会语境特征 3.3 模型构建 …

浅谈DNS域名解析的过程

用户在浏览器输入www.baidu.com时,DNS域名解析大致分为以下几个过程: 浏览器客户端检查自身有没有该域名的缓存: 如果浏览器有命中,直接返回该域名对应的IP地址,解析结束; (这个缓存可以设置TTL来控制有效时间,有点像A…

用C++求两个数的最大公约数和最小公倍数。(数论的基础思想)

目录原理最大公约数最小公倍数代码运行结果原理 最大公约数 有两个数字n和m。现在要求两个数字的最大公约数。 例如:n为18,m为4. 正常我们的思路求解最大公约数是暴力破解,遍历一遍公约数,取最大的那个,但是这样有一…

关闭Mac的Microsoft AutoUpdate弹框提示

macOS安装Microsoft Office for Mac之后,有时候会弹出Microsoft Auto Update微软应用自动更新工具。就像下面这样:(我不知道您会不会烦,我是烦了) 如果您也和我一样,不喜欢这样不经过允许就自动弹框的提示&…

【uiautomator2】 Android自动化测试框架

UiAutomator是Google提供的用来做安卓自动化测试的一个Java库. Uiautomator工作流程 1.在移动设备上安装atx-agent(守护进程),随后atx-agent启动uiautomator2服务(默认7912端口)进行监听 2.在PC上编写测试脚本并执行(相当于发送HTTP请求到移动设备的server端) 3.移动设备通过Wi…

python import失败解决方案

错误从何而起? 此时有这么一个目录结构 我们从a/b下执行python.exe ./main.py命令开始 案例: a/b/main.py导入a/package if __name__ "__main__":# 报错 ModuleNotFoundError: No module named packageimport package # 报错 ImportError: attempted relative…

Netty网络编程 - NIO基础

一. NIO 基础 non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 st…