zoukankan      html  css  js  c++  java
  • 《python深度学习》笔记---5.2-1、猫狗分类(流程)

    《python深度学习》笔记---5.2-1、猫狗分类(流程)

    一、总结

    一句话总结:

    【一、:基准网络(71%)】:首先,在2000 个训练样本上训练一个简单的小型卷积神经网络,不做任何正则化,为模型目标 设定一个基准。这会得到71% 的分类精度。此时主要的问题在于过拟合。
    【二、:数据增强解决过拟合(82%)】:然后,我们会介绍数 据增强(data augmentation),它在计算机视觉领域是一种非常强大的降低过拟合的技术。使用 数据增强之后,网络精度将提高到 82%。
    【三、:特征提取(96%)】:用预训练的网络做特征提 取(得到的精度范围在90%~96%),
    【四、:微调(97%)】:对预训练的网络进行微调(最终精度为97%)

    2、数据增强?

    【非常强大的降低过拟合的技术】:数据增强(data augmentation),它在计算机视觉领域是一种非常强大的降低过拟合的技术。使用 数据增强之后,网络精度将提高到 82%。
    【从现有的训练样本中生成更多的训练数据】:数据增强是从现 有的训练样本中生成更多的训练数据,其方法是利用多种能够生成可信图像的随机变换来增加 (augment)样本。

    3、有时你会听人说,仅在有大量数据可用时,深度学习才有效。这种说法部分正确?

    【深度学习的确需要大量数据】:深度学习的一个基本特性就是能够独立地在训练数据中找到有趣的特征,无须人为的特征工程,而这 只在拥有大量训练样本时才能实现。对于输入样本的维度非常高(比如图像)的问题尤其如此。
    【所谓大量是相对的】:但对于初学者来说,所谓“大量”样本是相对的,即相对于你所要训练网络的大小和深度 而言。只用几十个样本训练卷积神经网络就解决一个复杂问题是不可能的,但如果模型很小, 并做了很好的正则化,同时任务非常简单,那么几百个样本可能就足够了。
    【卷积神经网络更少的数据就能有好效果】:由于卷积神经网络 学到的是局部的、平移不变的特征,它对于感知问题可以高效地利用数据。虽然数据相对较少, 但在非常小的图像数据集上从头开始训练一个卷积神经网络,仍然可以得到不错的结果,而且 无须任何自定义的特征工程。

    4、what is shutil?

    【high-level operations on files and collections of files】

    The shutil module offers a number of high-level operations on files and collections of files. In particular, functions are provided which support file copying and removal. For operations on individual files, see also the os module.

    5、卷积神经网络中一般构建网络模式?

    【特征图的深度在逐渐增大,特征图的尺寸在逐渐减小】:网络中特征图的深度在逐渐增大(从32 增大到128),而特征图的尺寸在逐渐减小(从 150×150 减小到 7×7)。这几乎是所有卷积神经网络的模式。

    6、过拟合的原因?

    【学习样本太少】:过拟合的原因是学习样本太少,导致无法训练出能够泛化到新数据的模型。
    【无限数据永不过拟合】:如果拥有无限 的数据,那么模型能够观察到数据分布的所有内容,这样就永远不会过拟合。

    7、数据增强为什么不能完全消除过拟合?

    【高度相关的信息】:如果你使用这种数据增强来训练一个新网络,那么网络将不会两次看到同样的输入。但网 络看到的输入仍然是高度相关的,因为这些输入都来自于少量的原始图像。
    【没有新信息】:你无法生成新信息, 而只能混合现有信息。因此,这种方法可能不足以完全消除过拟合。

    8、如何理解下面这段fit代码?

    |||-begin

    history = model.fit(       
        train_generator,       
        steps_per_epoch=100,       
        epochs=30,       
        validation_data=validation_generator,       
        validation_steps=50)

    |||-end

    【Python生成器】:它的第一个参数应该是一个 Python 生成器,可以不停地生 成输入和目标组成的批量,比如 train_generator。
    【要知道每一轮需要从生成器中抽取多少个样本】:因为数据是不断生成的,所以 Keras 模型 要知道每一轮需要从生成器中抽取多少个样本。
    【从生成器中抽取 steps_per_epoch 个批量后进入下一个轮次】:这是 steps_per_epoch 参数的作用:从生成器中抽取 steps_per_epoch 个批量后(即运行了 steps_per_epoch 次梯度下降),拟合过程 将进入下一个轮次。
    【每个批量包含20 个样本】:本例中,每个批量包含20 个样本,所以读取完所有2000 个样本需要100 个批量。

    二、内容在总结中

    转自或参考:

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    SVN服务器搭建和使用
    oracle 存储过程
    PLSQL函数
    PL/SQL --> 游标
    PL SQL 游标学习
    PLSQL存储过程
    利用jqueryRotare实现抽奖转盘
    NSString 与NSMutableString的区别
    第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法
    第8章 应用协议 图解TCP/IP 详解
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13794552.html
Copyright © 2011-2022 走看看