小型数据集卷积神经网络CNN训练策略

  • 训练一个小型的模型
  • 使用预训练的网络做特征提取
  • 对预训练的网络进行微调

在很多场景下,我们都只有几千甚至几百个样本,而要使用这样的小样本来训练一个cnn网络又避免过拟合,需要采用一些策略,目前主要采用的策略主要有以下三种:

  • 训练一个小型的模型
  • 使用预训练的网络做特征提取
  • 对预训练的网络进行微调

训练一个小型的模型

这种方案主要适用的场景是用于比较简单的任务场景情况,可以设计一个比较小的模型,并做相应的正则化避免过拟合,也可做些数据增强增加样本量,这样即使在较小的样本数量,也能得到较为不错的结果。

这些小型化策略包括不限于:

  • 降低网络的深度
  • 降低网络每层参数的数量

也可使用数据增强来增加样本集

datagen = ImageDataGenerator(rotation_range, # rotation_range是角度值(在 0~180 范围内),表示图像随机旋转的角度范围width_shift_range, height_shift_range, # width_shift 和 height_shift 是图像在水平或垂直方向上平移的范围(相对于总宽度或总高度的比例)shear_range, # shear_range是随机错切变换的角度zoom_range, # zoom_range是图像随机缩放的范围horizontal_flip, # horizontal_flip 是随机将一半图像水平翻转fill_mode ) # fill_mode是用于填充新创建像素的方法,这些新像素可能来自于旋转或宽度/高度平移

使用预训练的网络做特征提取

这种方案是将一些已经经过大数据样本训练过的网络结构迁移到新的样本中进行训练。由于预训练的网络中保存了很多有用的特征提取信息,可以在小样本上有效的提取到有价值的特征信息,当然由于网络最终任务类型的区别,例如预训练的网络是1000种类型的分类,而我们只需要用于二分类,因此一般的做法是保留网络的CNN结构也就是卷积池化层,但后续的全连接层(分类层)需要重新设计和训练。

在keras中导入模型后,只需要设置include_top 即可指定是否包含全连接分类层

from keras.applications import VGG16
conv_base = VGG16(weights='imagenet',
include_top=False,
input_shape=(150, 150, 3))

使用下面类似的代码即可完成新的全连接分类层

model.add(layers.Dense(256, activation='relu', input_dim=4 * 4 * 512))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(1, activation='sigmoid'))

需要注意的是:由于预训练卷积层存储了相关的特征提取参数信息,而新的全连接层则被随机初始化,所以不能全网络进行训练,一般的做法是“冻结”网络卷积层,也就是预训练的网络参数不会被反向传播调整,只调整新加入的全连接及分类层的参数,这样参数数量也较小,可以使用小样本获得不错的训练结果

对预训练的网络进行微调

类似于上面的做法,再进行延伸,当然我们也可以只冻结一部分的卷积层,例如只留下最后一层卷积层可以被训练,而冻结之前的所有层,如图所示。

使用下面的代码表示冻结指定名称层之前的所有层

conv_base.trainable = True
set_trainable = False
for layer in conv_base.layers:if layer.name == 'block5_conv1':set_trainable = Trueif set_trainable:layer.trainable = Trueelse:layer.trainable = False

以下结论摘自《Python深度学习》,本文的内容也出自于对书中内容的理解。

  • 卷积神经网络是用于计算机视觉任务的最佳机器学习模型。即使在非常小的数据集上也可以从头开始训练一个卷积神经网络,而且得到的结果还不错。

  • 在小型数据集上的主要问题是过拟合。在处理图像数据时,数据增强是一种降低过拟合的强大方法。

  • 利用特征提取,可以很容易将现有的卷积神经网络复用于新的数据集。对于小型图像数据集,这是一种很有价值的方法。

  • 作为特征提取的补充,你还可以使用微调,将现有模型之前学到的一些数据表示应用于新问题。这种方法可以进一步提高模型性能。

小型数据集卷积神经网络CNN训练策略相关推荐

  1. 【人工智能与机器学习】——Keras编程分别实现人脸微笑和口罩数据集的识别模型训练和测试(卷积神经网络CNN) + 实时分类微笑和口罩识别检测

    机器学习练习目录 一.理解人脸图像特征提取的各种方法的特征 1.HOG 2.Dlib 3.卷积神经网络(CNN) 二.卷积神经网络(CNN)笑脸数据集(genki4k)正负样本的划分.模型训练和测试的 ...

  2. python卷积神经网络cnn的训练算法_【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理...

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  3. 基于FPGA的一维卷积神经网络CNN的实现(三)训练网络搭建及参数导出(附代码)

    训练网络搭建 环境:Pytorch,Pycham,Matlab. 说明:该网络反向传播是通过软件方式生成,FPGA内部不进行反向传播计算. 该节通过Python获取训练数据集,并通过Pytorch框架 ...

  4. 【深度学习21天学习挑战赛】3、使用自制数据集——卷积神经网络(CNN)天气识别

    活动地址:CSDN21天学习挑战赛 通过前两课的学习,加上私底下恶补基础,照猫画虎的基本算是掌握了卷积神经网络-CNN搭建模型的基本方法. 之前使用的,都是使用的现成的数据集,想想,如果今后真的需要应 ...

  5. EEGNet:一个小型的卷积神经网络,用于基于脑电的脑机接口

    脑机接口(BCI)利用神经活动作为控制信号,可以与计算机直接通信.这种神经信号通常从各种研究充分的脑电图(EEG)信号中选择.对于给定的脑机接口(BCI)范式,特征提取器和分类器是针对其所期望的脑电图 ...

  6. keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)

    版权声明:小博主水平有限,希望大家多多指导. 目录: [使用传统DNN] BG大龍:[DL项目实战02]图像分类--Keras框架+使用传统神经网络DNN​zhuanlan.zhihu.com [使用 ...

  7. 基于卷积神经网络 CNN 的猫狗识别详细过程

    目录 一.卷积神经网络(CNN) 1.1 卷积 1.2 前馈神经网络 1.3 卷积神经网络(CNN) 二.配置环境 三.猫狗数据分类建模 3.1 猫狗图像预处理 3.2 猫狗分类的实例--基准模型 3 ...

  8. 卷积神经网络 CNN 简述

    文章目录 所解决的问题 需要处理的数据量太大 很难保留图像特征 基本原理 卷积层 -- 提取图像特征 池化层 -- 数据降维(避免过拟合) 全连接层 -- 输出结果 实际应用 图像分类.检索 目标检测 ...

  9. 卷积神经网络(CNN)的参数优化方法

    积神经网络的参数优化方法--调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少. 著名: 本文是从 Michael Nielsen的电子书Neural Network and Deep L ...

  10. CNN---用于图像分类的经典的卷积神经网络CNN

    文章目录 概览 1.计算机视觉简介: 2.图像分类 一.LeNet-5 1.模型架构 2.模型简介 3.模型特点 二.AlexNet 1.网络架构 2.模型介绍 3.模型特点 三.VGGNet 1.模 ...

最新文章

  1. Linux中chown和chmod的区别和用法(转)
  2. GDCM:gdcm::terminal的测试程序
  3. 第十三章:Python の 网络编程进阶(二)
  4. 算法学习笔记(三)-----各种基础排序问题
  5. 第三场阴影场与属性访问器接口
  6. 函数表达书-读书笔记
  7. php培训出生做微电影网站的,微电影分享网站织梦整站源码
  8. 技术案例分享:WIPTEC采用Aruba边缘服务平台,实现物流配送生产自动化、精简生产力
  9. 价值6000的信息分类系统源码
  10. 敏捷开发一千零一问系列之六:业务人员怎样参与开发?
  11. rabbitmq接收不到消息_SpringBoot2.x系列教程63--SpringBoot整合消息队列之RabbitMQ详解
  12. matlab最佳拟合的指标是什么意思,Matlab拟合好坏常用指标
  13. c++ open_file函数
  14. 在线电子书阅读微信小程序 毕业设计(4)图书详细页-图书目录
  15. 【C#】如何给变量取一个好的名字
  16. springboot实现邮箱验证
  17. 野人岛4四季神器java,十一天,四季的感受,顶风冒雪美国中西部自驾旅游之五-黄石:梦想之地(1)...
  18. http/2与http/1的区别
  19. 计算机里的分数线怎么打出来,Word中分数怎么打出来? -电脑资料
  20. 工业环境下,嵌入式主板的选择要考虑哪些?

热门文章

  1. word排版案例报告_看完这4个文章排版要点,你就会排版啦!
  2. @永和:为自己编码 --- 开源中国众包平台上线
  3. 硬石类山水盆景的制造技法
  4. 拼多多商品详情查询V1新版接口
  5. C++:缺省参数是怎样设置的?
  6. linux拼音五笔输入法下载软件,万能五笔输入法
  7. #1005. 三个小朋友分糖果
  8. 9.9 单片机蜂鸣器
  9. 听说拼多多因漏洞被薅了200亿?- 谈谈软件测试
  10. win7 虚拟wifi服务器,w7虚拟wifi在哪里设置_win7虚拟wifi怎么开启