2.fastAI进阶(1)(DataLoader)

本文详细介绍了如何使用FASTAI库构建进阶dataloader,包括使用不同类型的数据块、从CSV文件加载标签、处理多分类数据以及使用F1ScoreMulti进行模型性能评估。教程涉及ImageBlock、CategoryBlock和MultiCategoryBlock等关键组件以及DataLoaders的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FASTAI

1.进阶dataloader

1.1 示例

pets = DataBlock(blocks=(ImageBlock, CategoryBlock), #用到的类型,图片、分类
                 get_items=get_image_files, #获取x的方式
                 splitter=RandomSplitter(), #分割方式
                 get_y=using_attr(RegexLabeller(r'(.+)_\d+.jpg$'), 'name'),	#获取y标签的方法
                 item_tfms=Resize(460),
                 batch_tfms=aug_transforms(size=224))

A datablock is built by giving the fastai library a bunch of informations:

  • the types used, through an argument called blocks: here we have images and categories, so we pass ImageBlock and CategoryBlock.
  • how to get the raw items, here our function get_image_files.
  • how to label those items, here with the same regular expression as before.
  • how to split those items, here with a random splitter.
  • the item_tfms and batch_tfms like before.

1.2 通过csv格式文件 进行标签

例子使用了多分类的数据集,标签在train.csv中

在这里插入图片描述

dls = ImageDataLoaders.from_df(df, path, folder=‘train’, valid_col=‘is_valid’, label_delim=' ', item_tfms=Resize(460), batch_tfms=aug_transforms(size=224))

  1. 使用from_df函数来加载csv的数据集。

  2. path为基目录,folder 用于在path和filename之间增加路径path/folder/filename

  3. label_delim 指定使用空格作为标签分类条件

  4. 文件名、标签默认为第一二列所以这里不需要指定。

进阶:

pascal = DataBlock(blocks=(ImageBlock, MultiCategoryBlock),
                   splitter=ColSplitter('is_valid'),
                   get_x=ColReader('fname', pref=str(path/'train') + os.path.sep),
                   get_y=ColReader('labels', label_delim=' '),
                   item_tfms = Resize(460),
                   batch_tfms=aug_transforms(size=224))

多分类使用F1 Score来评价模型的好坏

f1_macro = F1ScoreMulti(thresh=0.5, average='macro')
f1_macro.name = 'F1(macro)'
f1_samples = F1ScoreMulti(thresh=0.5, average='samples')
f1_samples.name = 'F1(samples)'
learn = vision_learner(dls, resnet50, metrics=[partial(accuracy_multi, thresh=0.5), f1_macro, f1_samples])

在这里插入图片描述

### 深度学习的学习路径与推荐资源 #### 初学者入门指南 对于初学者来说,了解基础概念和技术框架至关重要。一份完备的 AI 学习路线可以帮助快速掌握所需技能[^1]。例如,《TensorFlow-From-Zero-To-One》和《PyTorch-From-Zero-To-One》提供了从零开始到精通 TensorFlow 和 PyTorch 的教程,涵盖了理论知识与实践操作。 #### 中级进阶建议 当具备一定基础知识后,可以通过阅读经典书籍进一步提升理解能力。例如,“红色石头”的个人博客提供了一份详尽的机器学习入门路线图[^2],其中包含了多个阶段的学习目标及具体实施步骤。此路线图不仅涉及理论部分,还强调通过项目实战巩固所学内容。 #### 高级研究方向 进入高级阶段时,则需关注前沿技术动态及其应用场景。一篇关于“通往人工智能深度学习专家之路”的文章指出,在图像识别、自然语言处理等多个领域内,深度学习均展现出强大功能[^3]。因此,深入探索这些特定领域的专业知识变得尤为重要。 以下是几个具体的资源链接供参考: - **在线课程**: Coursera上的Andrew Ng教授开设的《Deep Learning Specialization》,系统讲解了神经网络原理及相关算法设计思路。 - **开源项目**: GitHub仓库 fast.ai 提供了一系列针对不同层次学员设计的教学材料,特别注重实际编码练习环节的设计。 - **社区交流平台**: 加入Reddit 或 Stack Overflow 等讨论区域能够及时解决遇到的技术难题,并与其他爱好者分享心得体验。 ```python import torch from torchvision import datasets, transforms transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) trainset = datasets.MNIST('PATH_TO_STORE_TRAINSET', download=True, train=True, transform=transform) valset = datasets.MNIST('PATH_TO_STORE_TESTSET', download=True, train=False, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True) valloader = torch.utils.data.DataLoader(valset, batch_size=64, shuffle=True) ``` 以上代码片段展示了如何使用PyTorch加载MNIST数据集进行训练的过程,这是新手接触深度学习编程时常会经历的一个简单例子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值