Skip to content

Latest commit

 

History

History
604 lines (357 loc) · 36.6 KB

fastai-course-chapter-2-on-linux-42d7a406349.md

File metadata and controls

604 lines (357 loc) · 36.6 KB

Fastai 课程第二章 Linux

原文:https://pub.towardsai.net/fastai-course-chapter-2-on-linux-42d7a406349?source=collection_archive---------2-----------------------

系列:人工智能

包含术语和命令定义的扩展指南

图片由桑德罗·卡塔琳娜

T 他的文章是一个扩展指南,旨在帮助你了解整章发生了什么。它提供了本文中使用的术语、命令和代码的定义。它还包括带下划线的文本,这些文本链接到文章词汇表中的其他定义。

教材的第二章展示了如何构建一个自定义数据集,使用数据集训练一个模型,以及使用小部件使用模型构建一个应用程序。它设置一个 Azure 帐户,用一个 API 查找和下载图像,并准备数据集。它还训练模型,保存和加载模型,并使用小部件用模型构建一个应用程序。

打开笔记本:

笔记本是一个在 Jupyter Noteboo k 中使用的文档,用于包含 web 应用程序中的可视内容。它包括计算的输入和输出、降价文本、等式、图像、视频和文本。它也有自己的内核,可以使用单一的编程语言运行代码。

  1. 打开 web 浏览器
  2. 输入 Jupyter 笔记本电脑服务器的 IP 地址
  3. 按“回车”
  4. 点击“桌面”
  5. 点击“快速预订”
  6. 单击“清理”
  7. 点击“02_production.ipynb”

更改内核:

笔记本内核是 Jupyter Notebook 中使用的一个程序,用于运行代码单元中的代码,并以特定的编程语言显示输出。它会记住代码单元之间的事件和用户交互,而不管代码单元的运行顺序。

  1. 单击“内核”菜单
  2. 选择“更改内核”子菜单
  3. 单击“FastAI (PyTorch)”菜单项

设置 Fastbook 库:

Fastai 是一个在 Python 中用于深度学习的库。它提供了一个构建在低级 API 层次结构之上的高级 API,可以通过重新构建来定制高级功能。它还支持计算机视觉、自然语言处理和表格数据处理。

  1. 选择代码单元格
  2. 点击“运行”

导入 Fastbook 库和 Widgets 模块:

Star Import 是 Python 中用于将整个库导入名称空间的语法。它没有指定导入了什么名称,这可能会意外地覆盖名称空间中的其他函数。它也只在特定情况下工作良好,如 Jupyter 笔记本中的交互式工作。

  1. 选择代码单元格
  2. 点击“运行”

设置 Azure 帐户:

微软 Azure 是一家云计算服务提供商,用于构建、测试、部署和管理应用程序和服务。它提供软件即服务、平台即服务和基础设施即服务,并支持许多编程语言、工具和框架。它还可以用于分析、虚拟计算、存储和网络等服务。

  1. 访问官网
  2. 单击“转到门户”
  3. 登录或创建新帐户
  4. 单击“创建资源”

导航到 Bing 搜索 API:

Bing 搜索 API 是一个 Azure Marketplace 服务,用于访问数十亿网页、图像、视频和新闻结果,无需广告。它可以根据当地位置或市场进行定制,以增加相关性。它还提供了 8 个功能,包括图片搜索、视频搜索、新闻搜索、网络搜索、视觉搜索、实体搜索、拼写检查和自动建议 API。

  1. 在搜索栏中输入“必应搜索”
  2. 点击“必应搜索 v7”
  3. 点击“创建”

创建 Bing 搜索 API 帐户:

需要阿炳搜索帐户才能访问 fastai 用来下载图像数据集的 Bing 图像搜索 API。它可以选择使用定价层下拉列表中的免费计划,其中包括每秒 3 次交易和每月 1,000 次交易。它还希望分配一个资源组来标记共享相同生命周期、权限和策略的其他服务。

  1. 输入 Bing 搜索帐户的名称
  2. 选择“免费 F1”定价等级
  3. 单击资源组下的“新建”
  4. 输入资源组的名称
  5. 单击“确定”
  6. 单击“我确认我已经阅读并理解下面的通知”
  7. 点击“创建”

复制 Bing 搜索 API 密钥:

*应用编程接口密钥(API 密钥)*是一个唯一的代码,用于访问 REST API。它用于跟踪和控制 API 的使用方式,这通常可以防止恶意使用或滥用 API。它还经常充当唯一标识符和身份验证的秘密令牌。

  1. 单击“转到资源”
  2. 单击“密钥和端点”
  3. 单击“显示密钥”
  4. 将代码复制到 Key 1 文本字段中

粘贴 Bing 搜索 API 密钥:

单行代码将 API 键存储在key变量中。它使用来自Python库的os模块中的environ对象中的get方法(该方法获取环境变量的值)获取密钥。它还设置了key参数(设置环境变量)和default参数(如果没有环境变量,则设置返回值)。

  1. 将代码粘贴到“XXX”上
  2. 选择代码单元格
  3. 点击“运行”

检查搜索图片 Bing 功能:

单行代码打印了一个丰富的字符串表示形式的search_images_bing 函数。它打印类、模块、函数名、输入参数和默认参数。它还显示了使用来自[IPython](#1df0)库的display函数在代码单元中运行的任何对象的丰富表示。

  1. 选择代码单元格
  2. 点击“运行”

获取图像 URL:

第一行在results变量中存储了一个字典列表。它使用fastbook库中的search_images_bing函数(发出 API 请求并处理响应)搜索图像。它还设置了key参数(设置访问 Bing 搜索 API 的 API 键)和term参数(设置查找图片的搜索词)。

第二行在ims变量中存储了图像的 URL 列表。它使用来自fastai库的L类中的attrgot方法(该方法使用键提取相关值)从results变量的字典列表中获取 URL。它还设置了k参数(该参数设置了访问字典列表中每个字典的相关值的键)。

第三、第四和第五行说明了前面几行后面的过程。它从results变量的字典列表中打印一个 API 响应,从ims变量的图像 URL 列表中打印一个图像 URL。它还打印存储在ims变量中的图像 URL 的数量。

  1. 从这些指令下面复制代码
  2. 将代码粘贴到代码单元格中的代码上
  3. 选择代码单元格
  4. 点击“运行”

替换图像:

这一行用包含一个图像 URL 的列表替换了ims变量中的图像 URL 列表。它确保在下一步显示适当的图像(防止显示任何可能令人不愉快的图像)。它也不是必需的,应该被认为是可选的。

  1. 选择代码单元格
  2. 点击“运行”

下载第一张图片:

第一行和第二行在dest 变量中存储保存图像的位置,并从ims变量中的 URL 下载图像。它使用fastai库中的download_url函数(可以从互联网上下载任何文件)获取图像。它还设置了url参数(设置 URL)和dest参数(设置目的地)。

  1. 选择代码单元格
  2. 点击“运行”

在输出中显示图像:

第一行将图像对象存储在im变量中。它使用来自[PIL](#d3cd)库的Image模块中的open函数(从dest变量中的文件路径获取图像)获取图像对象。它还设置fp参数(设置标识图像文件的文件指针)。

第二行显示缩略图。它使用来自PIL库的Image模块中的to_thumb方法(使用图像的副本来保存原始图像)创建缩略图。它还设置h参数(设置高度)和w参数(设置宽度)。

  1. 选择代码单元格
  2. 点击“运行”

定义子目录名称和图像目录路径:

第一行和第二行在bear_types 变量中存储子目录名称,在path变量中存储图像目录的路径。它创建一个子目录名称元组(表示预测类别)。它还使用来自Python库的pathlib模块中的Path类(接受文件路径作为字符串)创建了一个 Path 对象。

  1. 选择代码单元格
  2. 点击“运行”

下载图片:

第一行和第二行使用path变量中的路径创建bear目录。它使用not关键字和来自Python库的pathlib模块中的exists方法(检查路径是否存在)检查path变量中的路径是否不存在。如果路径不存在,它还会使用来自Python库的pathlib模块中的mkdir方法创建目录。

第三行和第四行遍历bear_types变量中的子目录名,并将子目录的路径存储在dest 变量中。它通过使用来自Python库的pathlib模块中的forward slash操作符连接path变量中的路径和o变量中的子目录名称来创建子目录的路径。

第五行使用dest 变量中的路径创建图像子目录。它使用来自Python库的pathlib模块中的mkdir方法(创建子目录)创建子目录。它还设置exist_ok参数(防止FileExistsError错误)。

第六行将搜索结果存储在results变量中。它使用来自fastai库的search_images_bing函数(发出 API 请求并处理响应)搜索 f 字符串(将o变量中的子目录名称添加到 bear 字符串的前面)。它还设置了key参数(设置访问 Bing 搜索 API 的 API 键)和term参数(设置查找图片的搜索词)。

第七行使用来自fastai库的download_images函数(从 URL 列表中获取图像)将图像下载到dest变量的子目录中。它设置了dest参数(设置目的地)和urls参数(设置 URL 列表)。它还使用来自fastai库的L类中的attrgot方法(使用contentUrl键提取 URL)从results变量(这是一个字典列表)中的搜索结果中获取 URL 列表。

  1. 选择代码单元格
  2. 点击“运行”

获取图像的文件路径:

第一行存储了fns变量中的文件路径列表。它使用来自fastai库的transforms模块中的get_image_files函数(查找目录和所有子目录中的所有图像)获取文件路径。它还设置path参数(设置目录)。

第二行打印了fns变量中文件路径列表的丰富字符串表示。它打印在目录和子目录中找到的图像数量。它还打印列表中的部分文件路径,包括目录、子目录、文件名和文件扩展名。

第五行打印了failed变量中文件路径列表的丰富字符串表示。它在fns变量中打印从列表中断开的图像数量。它还打印列表中的部分文件路径,包括目录、子目录、文件名和文件扩展名。

  1. 选择代码单元格
  2. 点击“运行”

找到不起作用的图像:

第一行存储了无法在failed变量中打开的文件路径列表。它使用fastai库的utils模块中的verify_images函数(检查图像是否可以打开)获取文件路径。它还设置fns参数(设置文件路径)。

第二行打印了在failed变量中文件路径列表的丰富字符串表示。它在fns变量中打印列表中被破坏的图像数量。它还打印列表中的部分文件路径,包括目录、子目录、文件名和文件扩展名。

  1. 选择代码单元格
  2. 点击“运行”

删除无效的图像:

这一行删除了failed变量中文件路径列表中的图像。它使用map函数(将函数应用于列表)和pathlib模块中的unlink方法(从计算机中删除图像)从Python库中删除图像。它还设置了function参数(设置应用于列表的函数)。

  1. 选择代码单元格
  2. 点击“运行”

创建数据块:

单行将数据块对象存储在bears变量中。它使用来自fastai库的block模块中的DataBlock类(用于构建数据加载器对象)创建数据块对象。它还设置了blocks参数(设置输入和输出数据类型)、get_items参数(设置文件路径列表)、splitter参数(设置如何将数据集分成训练集和验证集)、get_y参数(从数据集中提取标签)和item_tfms参数(将转换应用于图像)。

这一行代码还向DataBlock类传递了几个函数来创建数据块对象。它从fastai库中传递transforms模块中的RandomSplitter函数(将数据集随机分为训练集和验证集),并设置valid_pct 参数(设置用于验证集的数据百分比)和seed参数(设置随机种子)。它还从fastai库中传递augment模块中的Resize函数(调整图像大小)并设置size参数(设置图像大小)。

  1. 选择代码单元格
  2. 点击“运行”

创建数据加载器:

单行代码将数据加载器对象存储在dls变量中。它使用来自fastai库的DataBlock类中的dataloaders方法(为模型预处理数据集)创建数据加载器对象。它还设置了source参数(设置定位数据集的路径)。

  1. 选择代码单元格
  2. 点击“运行”

显示来自验证集的图像:

单行显示来自dls 变量中数据加载器对象的图像。它使用fastai库中core模块中的show_batch方法(显示子集的图像)显示图像。它设置了max_n参数(设置要显示的图像数量)和nrows参数(设置要使用的行数)。

  1. 选择代码单元格
  2. 点击“运行”

显示压扁的图像:

第一行在bears变量中存储了一个新的数据块对象。它使用来自fastai库的block模块中的new方法创建新的数据块对象(使用不同的转换创建新的数据块对象)。它还设置了item_tfms参数(该参数设置了与其他项目转换合并的新转换)。

第一行还将一个转换类传递给new方法来创建数据块对象。它从fastai库中传递augment模块中的Resize类(调整图像大小),并设置size参数(设置图像大小)和method参数(设置要执行的调整大小方法)。它还从fastai库中传递了basics模块中ResizeMethodSquish属性(压缩图像)。

第二行将数据加载器对象存储在dls变量中。它使用来自fastai库的DataBlock类中的dataloaders方法(为模型预处理数据集)创建数据加载器对象。它还设置了source参数(设置定位数据集的路径)。

第三行显示来自dls 变量中数据加载器对象的图像。它使用fastai库中core模块中的show_batch方法(显示子集的图像)显示图像。它设置了max_n参数(设置要显示的图像数量)和nrows参数(设置要使用的行数)。

  1. 选择代码单元格
  2. 点击“运行”

显示填充的图像:

第一行在bears变量中存储了一个新的数据块对象。它使用来自fastai库的block模块中的new方法创建新的数据块对象(使用不同的转换创建新的数据块对象)。它还设置了item_tfms参数(该参数设置了与其他项目转换合并的新转换)。

第一行还将一个转换类传递给new方法来创建数据块对象。它从fastai库中传递augment模块中的Resize类(调整图像大小),并设置size参数(设置图像大小)、method参数(设置要执行的调整大小方法)和pad_mode参数(设置要使用的填充类型)。它还从fastai库中传递了basics模块的ResizeMethod类中的Pad属性(将填充添加到图像中)和zeros属性(将填充设置为黑色像素)。

第二行将数据加载器对象存储在dls变量中。它使用来自fastai库的DataBlock类中的dataloaders方法(为模型预处理数据集)创建数据加载器对象。它还设置了source参数(设置定位数据集的路径)。

第三行显示来自dls 变量中数据加载器对象的图像。它使用fastai库中core模块中的show_batch方法(显示子集的图像)显示图像。它设置了max_n参数(设置要显示的图像数量)和nrows参数(设置要使用的行数)。

  1. 选择代码单元格
  2. 点击“运行”

显示裁剪的图像:

第一行在bears变量中存储一个新的数据块对象。它使用来自fastai库的block模块中的new方法创建新的数据块对象(使用不同的转换创建新的数据块对象)。它还设置了item_tfms参数(该参数设置了与其他项目转换合并的新转换)。

第一行还将一个转换类传递给new方法来创建数据块对象。它从fastai库中传递augment模块中的RandomResizedCrop类(将图像调整为随机裁剪的部分),并设置size参数(设置图像大小)和min_scale参数(设置要使用的图像的最低比例)。

第二行将数据加载器对象存储在dls变量中。它使用来自fastai库的DataBlock类中的dataloaders方法(为模型预处理数据集)创建数据加载器对象。它还设置了source参数(设置定位数据集的路径)。

第三行显示来自dls 变量中数据加载器对象的图像。它使用fastai库中core模块中的show_batch方法(显示子集的图像)显示图像。它设置了max_n参数(设置要显示的图像数量)、nrows参数(设置要使用的行数)和unique参数(使用相同的批处理进行转换)。

  1. 选择代码单元格
  2. 点击“运行”

显示增强图像:

第一行在bears变量中存储一个新的数据块对象。它使用来自fastai库的block模块中的new方法(使用不同的转换创建一个新的数据块对象)创建新的数据块对象。它还设置了item_tfms参数(设置与其他项目转换合并的新转换)和batch_tfms参数(设置批处理的转换)。

第一行还将一个转换类传递给new方法来创建数据块对象。它从fastai库中传递augment模块中的Resize类(调整图像大小)并设置size参数(设置图像大小)。它还从fastai库中传递augment模块中的aug_transforms函数(这是预设的变换),并设置mult参数(这增加了增强)。

第二行将数据加载器对象存储在dls变量中。它使用来自fastai库的DataBlock类中的dataloaders方法(为模型预处理数据集)创建数据加载器对象。它还设置source参数(设置定位数据集的路径)。

第三行显示来自dls 变量中数据加载器对象的图像。它使用fastai库中core模块中的show_batch方法(显示子集的图像)显示图像。它设置了max_n参数(设置要显示的图像数量)、nrows参数(设置要使用的行数)和unique参数(使用相同的批处理进行转换)。

  1. 选择代码单元格
  2. 点击“运行”

创建新的数据加载器:

第一行在bears变量中存储了一个新的数据块对象。它使用来自fastai库的block模块中的new方法创建新的数据块对象(使用不同的转换创建新的数据块对象)。它还设置了item_tfms参数(设置与其他项目转换合并的新转换)和batch_tfms参数(设置批处理的转换)。

第二行将数据加载器对象存储在dls变量中。它使用来自fastai库的DataBlock类中的dataloaders方法(为模型预处理数据集)创建数据加载器对象。它还设置了source参数(设置定位数据集的路径)。

  1. 选择代码单元格
  2. 点击“运行”

训练图像分类模型:

第一行将学习者对象存储在learn变量中。它使用来自fastai库的learner模块中的cnn_learner函数(构建一个学习器来执行计算机视觉的迁移学习)创建学习器对象。它还设置了dls参数(设置数据加载器对象)、arch参数(设置构建模型的架构)和metrics参数(设置要显示的指标)。

第二行使用fine_tune方法执行迁移学习。它将模型的最终层(在微调过程中被替换)训练一个时期,然后将整个模型(包括最终层)重新训练指定数量的时期。它还设置epochs参数(设置训练模型的时期数)。

  1. 选择代码单元格
  2. 点击“运行”

显示混淆矩阵:

第一行将解释对象存储在interp变量中。它使用来自fastai库的interpret模块中的ClassificationInterpretation类(存储分类模型的解释方法)中的from_learner方法创建解释对象。它还设置learn参数(设置学习者对象)。

第二行显示混淆矩阵。它使用来自fastai库的interpret模块的Classification-Interpretation类中的plot_confusion_matrix方法显示混淆矩阵。它也大部分是从sklearn库中的metics模块复制过来的。

  1. 选择代码单元格
  2. 点击“运行”

显示最高损失:

单行显示损失最大的图像。它使用来自fastai库的interpret模块的Class-ificationInterpretation类中的plot_top_losses方法显示图像(该方法显示图像和相关的预测、实际标签、损失和概率)。它还设置了k参数(设置要显示的最高损耗数)和nrows参数(设置要使用的行数)。

  1. 选择代码单元格
  2. 点击“运行”

清洁图像:

第一行在cleaner变量中存储了 images cleaner 小部件。它使用来自fastai 库的widgets模块中的ImageClassifierCleaner类(创建图像清洁器)创建图像清洁器小部件。它还设置了learn参数(设置更瘦的对象)。

第二行显示图像清洁器小部件。它显示图像子目录下拉列表(设置子目录)和数据集下拉列表(设置训练集或验证集)。它还显示所选图像子目录和数据集中模型最不确定的图像,并显示操作下拉列表(设置是保留、删除还是将图像移动到不同的子目录)。

  1. 选择代码单元格
  2. 点击“运行”

进行更改:

第一行删除用 image cleaner 小部件设置为“delete”的图像。它遍历由图像分类器清洁器对象中的delete方法返回的索引(返回一个列表),并使用pathlib模块中的unlink方法(从计算机中删除图像)从Python库中删除图像。它还使用索引来获取图像分类器清洁器对象的fns属性的文件路径列表中的文件路径(用于删除图像)。

第二行移动用 image cleaner 小部件设置到不同子目录的图像。它遍历由图像分类器清理器对象中的change方法(返回列表)和来自Python库的shutil模块中的move方法(移动图像)返回的项目(包含索引和子目录的元组)。它还使用索引来获取图像分类器清理器对象的fns属性中的文件路径列表中的文件路径(用于移动图像),并设置src参数(用于设置图像的位置)和dst参数(用于设置图像的移动位置)。

  1. 从这些指令下面复制代码
  2. 将代码粘贴到代码单元格中的代码上
  3. 选择代码单元格
  4. 点击“运行”

保存模型:

单行保存训练好的模型以用于生产。它使用来自fastai库的Learner模块中的export函数保存模型(该函数保存了重新构建用于推理的学习者对象所需的一切)。它还保存架构(定义如何构建模型)、训练参数(定义如何进行预测)和数据加载器参数(定义如何转换数据)。

  1. 选择代码单元格
  2. 点击“运行”

检查保存的文件:

第一行在path变量中存储了一个路径对象。它使用来自Python库的pathlib模块中的Path类(创建文件系统路径对象)创建路径对象。它也默认使用当前目录,因为没有设置args参数(设置文件路径)。

第二行列出了path变量中具有“pkl”文件扩展名的文件路径。它使用来自fastai库的xtras模块中的ls方法(显示路径的内容)过滤文件路径。它还设置了file_exts参数(设置要过滤的文件扩展名)

  1. 选择代码单元格
  2. 点击“运行”

加载模型:

单行代码将一个学习者对象存储在learn_inf变量中。它使用来自fastai库的Learner模块中的load_learner函数(从 pickle 文件加载学习者对象)加载学习者对象。它还设置了fname参数(为 pickle 文件设置文件路径)。

  1. 选择代码单元格
  2. 点击“运行”

做个预测:

这一行预测了一幅图像。它使用来自fastai库的learner模块中的Learner类中的predict方法(返回一个包含预测的类、索引和概率的元组)进行预测。它还设置item参数(设置图像)。

  1. 选择代码单元格
  2. 点击“运行”

检查预测类别:

单行显示了可能的预测类别列表。它从fastai库中的core模块的DataLoaders类的vocab属性中获取预测类别列表。它还表示与预测指数和预测概率相关的列表。

  1. 选择代码单元格
  2. 点击“运行”

创建文件上传小部件:

第一行将文件上传小部件存储在btn_upload变量中。它使用来自ipwidgets库的widget-_upload模块中的FileUpload类创建文件上传小部件。它还将选定的文件上传到内核的内存中,以便在笔记本中引用。

第二行显示了 Jupyter 笔记本 REPL 输出中的文件上传小部件。它显示按钮(打开一个对话框窗口来选择文件)。它还显示按钮中选定文件的数量(通过单击按钮添加文件或通过运行代码单元格重置)。

  1. 选择代码单元格
  2. 点击“运行”

替换图像:

单行在btn_upload变量中存储一个对象。它使用来自Python库的types模块中的SimpleNameSpace类创建对象。它还设置了data参数(设置属性名)和data参数(设置相关的属性值)。

简单名称空间是 Python 中用来创建可以存储属性的对象的类。它通过定义参数来设置属性名,通过传递参数来设置属性值。它还可以用点符号添加属性,或者用 del 关键字删除属性。

  1. 选择代码单元格
  2. 点击“运行”

加载图像:

单行在img变量中存储一个图像对象。它使用来自fastai库的core模块中的create方法(使用来自PIL库的Image模块中的open方法)加载图像对象。它还设置了fn参数(该参数设置了从btn_upload变量的data属性中的文件路径列表返回的文件路径)。

  1. 选择代码单元格
  2. 点击“运行”

创建输出小部件:

第一行将输出小部件存储在out_pl变量中。它使用来自[ipywidgets](#7a89)库的widget_output模块中的Output类(可以捕获和显示标准输出、标准错误和任何由IPython库生成的丰富输出)创建输出小部件。

第二行清除了变量out_pl中输出小部件的数据。它使用来自ipywidgets模块的widget_output模块的Output类中的clear_output方法(使用来自IPython库的display模块中的clear-_output函数)清除数据。

调用输出小部件时,第三行显示一个缩略图。它使用with语句(调用输出小部件时运行相关代码)和out_pl变量(包含附加到with语句的输出小部件)显示缩略图。

第三行还向display函数传递一个缩略图。它使用来自fastai库的core模块中的to_thumb方法(使用img变量中图像对象的副本创建图像)创建缩略图。它还设置h参数(设置图像高度)和w参数(设置图像宽度)。

第四行调用out_pl变量中的输出小部件。它显示了传递给与with语句相关的代码中的display函数的图像(使用to_thumb方法创建的)(运行该语句是因为调用了out_pl变量中的输出小部件)。

  1. 选择代码单元格
  2. 点击“运行”

做个预测:

这一行预测了一幅图像。它使用来自fastai库的learner模块的Leaner类中的predict方法进行预测,并将解构后的预测(包括预测、预测指数和概率)存储在predpred_idxprobs变量中。它还设置item参数(设置图像)。

  1. 选择代码单元格
  2. 点击“运行”

创建标签小部件:

第一行将标签小部件存储在lbl_pred变量中。它使用来自ipywidgets库的widget_string模块中的Label类创建标签小部件(该类使用与控件小部件的内置描述相似的样式在控件小部件旁边创建自定义描述)。

第二行和第三行设置标签的值,并在输出中显示标签小部件。它使用 f-string 在 label 小部件中设置value属性(存储显示的文本值)(使用pred变量显示预测,使用probspred_idx变量使用四个小数位显示预测的概率)。它还调用lbl_pred变量(在输出中显示标签小部件)。

  1. 选择代码单元格
  2. 点击“运行”

创建按钮小部件:

第一行将按钮小部件存储在btn_run变量中。它使用来自ipywidgets库的widget-_button模块中的Button类(当按钮被点击时,它显示一个运行on_click方法中的代码的按钮)创建按钮小部件。它还设置了description参数(该参数设置显示在按钮小部件内部的文本)。

第二行显示输出中的按钮小部件。它显示按钮部件,该部件运行从ipywidgets库中传递给widget-_button模块中Button类的on_click方法的callback 参数的任何函数。当点击按钮时,它也不做任何事情,因为还没有设置callback参数。

  1. 选择代码单元格
  2. 点击“运行”

定义应用程序逻辑:

前六行定义了on_click_classify功能。它使用前面步骤中的代码定义函数(包含应用程序的逻辑)。它还加载图像,清除输出,显示缩略图,进行预测,并显示预测。

第七行设置了单击按钮时运行的函数。它使用来自ipywidgets库的widget_button模块的Button类中的on_click方法来设置函数。它还设置了call-back参数(设置点击按钮时运行的功能)。

  1. 选择代码单元格
  2. 点击“运行”

创建文件上传小部件:

第一行将文件上传小部件存储在btn_upload变量中。它使用来自ipwidgets库的widget-_upload模块中的FileUpload类创建文件上传小部件。它还将选定的文件上传到内核的内存中,以便在笔记本中引用。

  1. 选择代码单元格
  2. 点击“运行”

创建应用程序:

这一行创建了应用程序的布局。它使用来自ipywidgets库的widgets模块中的VBox类(垂直显示多个小部件)创建布局。它还设置了一个小部件列表,包括新标签小部件、btn_upload变量中的文件上传小部件、btn_run变量中的分类按钮小部件、out_pl变量中的输出小部件和lbl_pred变量中的预测标签小部件。

  1. 选择代码单元格
  2. 点击“运行”
  3. 点击“上传”
  4. 选择一幅图像
  5. 点击“分类”

“希望这篇文章能帮助您获得👯‍♀️🏆👯‍♀️,记得订阅获取更多内容🏅"

后续步骤:

本文是帮助您从头到尾设置完成 Fast.ai 课程所需的一切的系列文章的一部分。它包含在教科书每章末尾提供问卷答案的指南。它还包含使用术语和命令的定义、说明和屏幕截图一步一步地浏览代码的指南。

**Linux:**
01\. [Install the Fastai Requirements](https://medium.com/p/116415a9df22)
02\. [Fastai Course Chapter 1 Q&A](https://medium.com/p/735f932def0a)
03\. [Fastai Course Chapter 1](https://medium.com/p/d69df3db69a7)
04\. [Fastai Course Chapter 2 Q&A](https://medium.com/p/af9dab3ce8c6)
05\. [Fastai Course Chapter 2](https://medium.com/p/42d7a406349)
06\. [Fastai Course Chapter 3 Q&A](https://medium.com/p/2df7f3a9711)
07\. Fastai Course Chapter 3
08\. [Fastai Course Chapter 4 Q&A](https://medium.com/p/90d2ccb6eaa9)

其他资源:

本文是帮助您设置开始使用人工智能、机器学习和深度学习所需的一切的系列文章的一部分。它包含扩展的指南,提供术语和命令的定义,帮助您了解正在发生的事情。它还包含简明指南,提供说明和屏幕截图,帮助您更快获得结果。

**Linux:**
01\. [Install and Manage Multiple Python Versions](https://medium.com/p/916990dabe4b)
02\. [Install the NVIDIA CUDA Driver, Toolkit, cuDNN, and TensorRT](https://medium.com/p/cd5b3a4f824)
03\. [Install the Jupyter Notebook Server](https://medium.com/p/b2c14c47b446)
04\. [Install Virtual Environments in Jupyter Notebook](https://medium.com/p/1556c8655506)
05\. [Install the Python Environment for AI and Machine Learning](https://medium.com/p/765678fcb4fb)**WSL2:**
01\. [Install Windows Subsystem for Linux 2](https://medium.com/p/cbdd835612fb)
02\. [Install and Manage Multiple Python Versions](https://medium.com/p/1131c4e50a58)
03\. [Install the NVIDIA CUDA Driver, Toolkit, cuDNN, and TensorRT](https://medium.com/p/9800abd74409) 
04\. [Install the Jupyter Notebook Server](https://medium.com/p/7c96b3705df1)
05\. [Install Virtual Environments in Jupyter Notebook](https://medium.com/p/3e6bf456041b)
06\. [Install the Python Environment for AI and Machine Learning](https://medium.com/p/612240cb8c0c)
07\. [Install Ubuntu Desktop With a Graphical User Interface](https://medium.com/p/95911ee2997f) (Bonus)**Windows 10:**
01\. [Install and Manage Multiple Python Versions](https://medium.com/p/c90098d7ba5a)
02\. [Install the NVIDIA CUDA Driver, Toolkit, cuDNN, and TensorRT](https://medium.com/p/55febc19b58)
03\. [Install the Jupyter Notebook Server](https://medium.com/p/e8f3e9436044)
04\. [Install Virtual Environments in Jupyter Notebook](https://medium.com/p/5c189856479)
05\. [Install the Python Environment for AI and Machine Learning](https://medium.com/p/23c34b2baf12)**MacOS:** 01\. [Install and Manage Multiple Python Versions](https://medium.com/p/ca01a5e398d4)
02\. [Install the Jupyter Notebook Server](https://medium.com/p/2a276f679e0)
03\. [Install Virtual Environments in Jupyter Notebook](https://medium.com/p/e3de97491b3a)
04\. [Install the Python Environment for AI and Machine Learning](https://medium.com/p/2b2353d7bcc3)

词汇表:

Jupyter Notebook 是一个用于创建、修改和分发包含代码、等式、可视化和叙述性文本的笔记本的程序。它提供了一个在 web 浏览器中运行的交互式编码环境。它也已经成为机器学习和数据科学的首选工具。 [ 返回

Python 是一种面向对象的语言,以其简单的语法、代码可读性、灵活性和可伸缩性而闻名。它主要用于开发 web 和软件应用程序。它也已经成为人工智能、机器学习和数据科学最流行的语言之一。 [ 返回

Bing 图片搜索 API 是一个 RESTful 网络服务,用于在互联网上搜索图片。默认情况下,它返回用户请求的图像。它还可以使用查询参数按照纵横比、颜色、新旧程度、高度、宽度、图像类型、许可证和大小对图像进行排序和过滤。 返回

交互式 Python (IPython) 是 Jupyter Notebook 中使用的交互式外壳和默认内核。它运行包含在 Jupyter 笔记本文件中的 Python 代码。它还增加了新的功能,如自省、并行计算、富媒体、shell 语法、制表符结束和历史。 回车

Python 图像库(PIL) 是一个在 Python 中使用的库,用于向 Python 解释器添加图像编辑功能。它提供了从文件中加载图像、处理图像以及以不同文件格式创建新图像的功能。也是 2011 年停产,正式换成抱枕。 [ 返回

Ipywidgets 是 Python 中的一个库,用于为 Jupyter Notebook 提供交互式 HTML 小部件。它包括按钮、滑块和下拉菜单等小部件,在 web 浏览器中结合了 Python 和 JavaScript 功能。它还允许用户通过响应事件和调用指定的事件处理程序来控制数据和可视化数据的变化。 [ 返回 ]