美文网首页
2019-04-29 手把手教你用pytorch实现迁移学习(第

2019-04-29 手把手教你用pytorch实现迁移学习(第

作者: QQsoso | 来源:发表于2019-04-30 16:23 被阅读0次

一 前言

     1 前提条件:

            这是一篇小白实现迁移学习的文章,本文不需要事先掌握Pytorch或者迁移学习的相关知识,但是您最好需要对深度学习的一些基本概念,以及卷积神经网络的一些基本术语有所了解。

    2 本文的环境配置:

        我们采用的是Anaconda For python 3.6的环境和Jupter Notebook编辑器,以及gpu版本的Pytorch环境。因为本文以图像数据集作示例,所以如果用cpu版本pytorch的话,可能会需要很长很长很长很长时间来运行。

    3 完整代码:

        待上传。

二 Pytorch的介绍

        pytorch是深度学习框架中的新晋热门“小鲜肉”,它凭借其高度的灵活性和对网络动态行为的控制快速发展起来。与Tensorflow不同,pytorch在python基础之上定义了自己独特的语法风格,对深度学习小白更为友好。

        Pytorch gpu版本的安装:

            因为本文使用的是cuda10.1,在这个cuda版本下的最新pytorch gpu版安装指令是:

            pip install https://download.pytorch.org/whl/cu100/torch-1.0.1-cp36-cp36m-win_amd64.whl

             pip install torchvision

        当然,还有很多其他的安装方式,在这里不再赘述,有问题的读者可以自行百度(此处需要附链接

三 迁移学习的介绍

        迁移学习,顾名思义,就是把在某个领域获取的知识迁移到对另一个领域的学习中,也就是举一反三。通常情况下,它意味着某个人在一个(通常来说很大的)数据集上训练了一个模型,然后把这个“预训练”的模型放在模型库中存储起来。当我们想在其他的数据集中应用这个模型的时候,就可以直接把它从模型库中拎出来,稍做调整之后直接使用。通过这种行为,我们利用之前的模型训练新的数据,不仅节省了训练模型的时间,还实现了“知识”从原用例到新的用例的迁移,提高了新用例的训练准确度。当我们使用迁移学习的时候,就相当于是站在“巨人的肩膀”上做事,事半功倍的一个过程。

        迁移学习是深度学习研究者们非常青睐的一个领域,当用例被很好地理解并且数据“固定”时,迁移学习可以达到最好的效果,例如在基于像素的图像分类和目标检测中,或者在NLP领域(都是词汇表中的单词)。

        但是对业务中使用的结构化数据表格来说,它可能就没那么有效,例如从数据库或者文件中直接收集的数据。因为不同公司之间的数据在结构和语义上可能截然不同。然而,随着嵌入的逐渐流行,这一点也渐渐有所改变。就像nlp中的单词嵌入一样,嵌入技术允许我们将一个领域的数据迁移到另一个相似的领域(或同一领域的不同问题)中去。

四 图像分类用例

        图像分类是很多计算机视觉领域问题的核心部分,例如目标检测,人脸识别,图像分割等等,通过分类过程从图像中提取的特征可以有效地应用在这些研究领域。

        在本教程中,我们将会手把手教你如何在Pytorch中用迁移学习来解决图像分类的问题,可以自动将图像中的对象分类,例如分成鸟/飞机/狗/猫等等。

五 数据集介绍

        在本教程中我们使用到的是CIFAR-10 数据集。CIFAR-10数据集包含60000张图片,每个图片大小是32×32 像素,数据集中的图片被分为10个类,分别是 'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck'。

        这是一个很难分类的数据集,因为里面的图片很小并且有点模糊(分辨率低),从这里可以看到数据集的一些benchmark:(戳我戳我

        在2014年,Kaggle还在这个数据集上举行了一个竞赛:(详情戳我

六 教程目标

        在本教程结束后,你们将能够:

            1 使用pytorch创建一个API(一组类和功能函数)来对任何图像数据集进行预处理,并用他们进行神经网络的训练、评估和预测。

            2 利用Pytorch API将迁移学习应用到图像数据集上并进行分类。

            3 学习到一些小技巧,通过高效融合三种灵活的预训练模型,来使他们在CIFAR-10数据集上取得比单一模型更高的准确率。

            4 学习如何使用pytorch为深度学习任务创建类,并将它们用作其他用例中的组件。

七 State of The Art

        在准备这篇教程的时候,本教程所用方法的准确率(94.7%)在benchmark网站和Kaggle竞赛(当然只是late submission)的综合排名中处于第三位。这是通过总共不到两小时的训练得出的。显卡参数,GPU参数(待补充)。

八 教程摘要

    本教程由以下几个部分组成:

    1、在Pytorch中导入Cifar-10 数据集

    2、对数据集进行预处理,进行训练准备工作

    3、创建一个基类

    4、创建基类的子类-全连接类

    5、创建基类的子类-迁移学习类

    6、在Cifar-10数据集上训练两个预训练好的迁移模型

    7、在训练集上分别用独立模型和组合模型进行准确率评估和结果预测

    8、在Kaggle提供的更大的测试集上进行结果预测

相关文章

网友评论

      本文标题:2019-04-29 手把手教你用pytorch实现迁移学习(第

      本文链接:https://www.haomeiwen.com/subject/vspynqtx.html