前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PyTorch 60分钟入门系列之训练分类器

PyTorch 60分钟入门系列之训练分类器

作者头像
AI异构
发布2020-07-29 15:04:54
6370
发布2020-07-29 15:04:54
举报
文章被收录于专栏:AI异构AI异构

训练分类器

前面的教程中我们已经学习了如何定义神经网络,计算损失并更新网络的权重。接下来,我们完整的训练一个神经网络模型,并测试其性能。

数据集说明

一般来说,当在处理图像,文本,音频或视频数据时,可以使用标准的python包将数据加载到一个numpy数组中。然后将这个数组转换成torch.Tensor

  • 图像的话,可以用Pillow, OpenCV
  • 声音处理可以用scipylibrosa
  • 文本的处理使用原生Python或者Cython以及NLTKSpaCy都可以。 特别是对于图像,PyTorch创建了一个名为torchvision的软件包,该软件包具有常用数据集(如ImagenetCIFAR10MNIST等)的数据加载器torchvision.datasets,以及用于图像的数据转换器torch.utils.data.DataLoader。这提供了巨大的便利并避免了编写样板代码。 本教程使用CIFAR10数据集。 我们要进行的分类的类别有:'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck'。 这个数据集中的图像都是3通道,32x32像素的图片。
训练一个图像分类器

我们要按顺序做这几个步骤:

  • 使用torchvision来读取并预处理CIFAR10数据集
  • 定义一个卷积神经网络
  • 定义一个代价函数
  • 在神经网络中训练训练集数据
  • 使用测试集数据测试神经网络
1.加载和归一化CIFAR10

torchvision加载的数据集的输出是范围[0,1]的PILImage图像。我们将它们转换为归一化范围[-1,1]的张量。

我们来从中找几张图片看看。

2.定义卷积神经网络结构
3.定义损失函数和优化器
4.训练网络
5.测试网络

我们已经训练了两遍了。 此时需要测试一下到底结果如何。

通过对比神经网络给出的分类和已知的类别结果,可以得出正确与否。如果预测的正确,我们可以将样本加入正确预测的结果的列表中。

好的第一步,让我们展示几张照片来熟悉一下。

现在让我们看看神经网络认为这些例子是什么:

输出是10类对应的数值。一个类对应的数值越高,网络认为这个图像就是越接近这个类。那么,让我们得到最高数值对应的类:

结果看起来挺好。 看看神经网络在整个数据集上的表现结果如何:

从结果上看,神经网络输出的结果比随机要好,随机选择的话从十个中选择一个出来,准确率大概只有10%。 看上去神经网络学到了点东西。 我们看一下那么到底哪些类别表现良好又是哪些类别不太行呢?

参考

Deep Learning with PyTorch: A 60 Minute Blitz(https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI异构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 训练分类器
    • 数据集说明
      • 训练一个图像分类器
        • 1.加载和归一化CIFAR10
        • 2.定义卷积神经网络结构
        • 3.定义损失函数和优化器
        • 4.训练网络
        • 5.测试网络
    • 参考
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档