深度学习之卷积神经网络cnn及tensorflow代码实现示例

cxmscb cxmscb     2022-08-30     262

关键词:

一、CNN的引入

在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连的。当输入层的特征维度变得很高时,这时全连接网络需要训练的参数就会增大很多,计算速度就会变得很慢,例如一张黑白的 28×28 的手写数字图片,输入层的神经元就有784个,如下图所示:


这里写图片描述

若在中间只使用一层隐藏层,参数 w 就有 784×15=11760 多个;若输入的是 28×28 带有颜色的RGB格式的手写数字图片,输入神经元就有 28×28×3=2352 个…… 。这很容易看出使用全连接神经网络处理图像中的需要训练参数过多的问题。

而在卷积神经网络(Convolutional Neural Network,CNN)中,卷积层的神经元只与前一层的部分神经元节点相连,即它的神经元间的连接是非全连接的,且同一层中某些神经元之间的连接的权重 w 和偏移 b 是共享的(即相同的),这样大量地减少了需要训练参数的数量。

卷积神经网络CNN的结构一般包含这几个层:

  • 输入层:用于数据的输入
  • 卷积层:使用卷积核进行特征提取和特征映射
  • 激励层:由于卷积也是一种线性运算,因此需要增加非线性映射
  • 池化层:进行下采样,对特征图稀疏处理,减少数据运算量。
  • 全连接层:通常在CNN的尾部进行重新拟合,减少特征信息的损失
  • 输出层:用于输出结果

当然中间还可以使用一些其他的功能层:

  • 归一化层(Batch Normalization):在CNN中对特征的归一化
  • 切分层:对某些(图片)数据的进行分区域的单独学习
  • 融合层:对独立进行特征学习的分支进行融合

二、CNN的层次结构

输入层:

在CNN的输入层中,(图片)数据输入的格式 与 全连接神经网络的输入格式(一维向量)不太一样。CNN的输入层的输入格式保留了图片本身的结构。

对于黑白的 28×28 的图片,CNN的输入是一个 28×28 的的二维神经元,如下图所示:


这里写图片描述

而对于RGB格式的 28×28 图片,CNN的输入则是一个 3×28×28 的三维神经元(RGB中的每一个颜色通道都有一个 28×28 的矩阵),如下图所示:


这里写图片描述

卷积层:

在卷积层中有几个重要的概念:

  • local receptive fields(感受视野)
  • shared weights(共享权值)

假设输入的是一个 28×28 的的二维神经元,我们定义 5×5 的 一个 local receptive fields(感受视野),即 隐藏层的神经元与输入层的 5×5 个神经元相连,这个5*5的区域就称之为Local Receptive Fields,如下图所示:


这里写图片描述

可类似看作:隐藏层中的神经元 具有一个固定大小的感受视野去感受上一层的部分特征。在全连接神经网络中,隐藏层中的神经元的感受视野足够大乃至可以看到上一层的所有特征。

而在卷积神经网络中,隐藏层中的神经元的感受视野比较小,只能看到上一次的部分特征,上一层的其他特征可以通过平移感受视野来得到同一层的其他神经元,由同一层其他神经元来看:


这里写图片描述

设移动的步长为1:从左到右扫描,每次移动 1 格,扫描完之后,再向下移动一格,再次从左到右扫描。

具体过程如动图所示:


这里写图片描述


这里写图片描述

可看出 卷积层的神经元是只与前一层的部分神经元节点相连,每一条相连的线对应一个权重 w

一个感受视野带有一个卷积核,我们将 感受视野 中的权重 w 矩阵称为 卷积核 ;将感受视野对输入的扫描间隔称为步长(stride);当步长比较大时(stride>1),为了扫描到边缘的一些特征,感受视野可能会“出界”,这时需要对边界扩充(pad),边界扩充可以设为 0 或 其他值。步长 和 边界扩充值的大小由用户来定义。

卷积核的大小由用户来定义,即定义的感受视野的大小;卷积核的权重矩阵的值,便是卷积神经网络的参数,为了有一个偏移项 ,卷积核可附带一个偏移项 b ,它们的初值可以随机来生成,可通过训练进行变化。

因此 感受视野 扫描时可以计算出下一层神经元的值为:

b+i=04j=04wijxij

tensorflow学习之使用卷积神经网络(cnn)分类手写数字0-9(代码片段)

#卷积神经网络cnnimporttensorflowastffromtensorflow.examples.tutorials.mnistimportinput_data#数据包,如果没有自动下载number1to10datamnist=input_data.read_data_sets(‘MNIST_data‘,one_hot=True)#用测试集来评估神经网络的准确度defcomputer_a 查看详情

从软件工程的角度写机器学习6——深度学习之卷积神经网络(cnn)实现

卷积神经网络(CNN)实现背景卷积神经网络广泛用于图像检测,它的实现原理与传统神经网络基本上是一样的,因此将普遍意义的神经网络和卷积神经网络的实现合成一篇。神经网络实现思路“扔掉神经元”尽管所有教程在介绍... 查看详情

深度学习之卷积神经网络(cnn)

卷积神经网络(CNN)因为在图像识别任务中大放异彩,而广为人知,近几年卷积神经网络在文本处理中也有了比较好的应用。我用TextCnn来做文本分类的任务,相比TextRnn,训练速度要快非常多,准确性也比较高。TextRnn训练慢得像... 查看详情

深度学习之卷积和池化

转载:http://www.cnblogs.com/zf-blog/p/6075286.html卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT-CONV-RELU-POOL-FC(1)卷积层:用它来进行特征提取,如下:输入图像是32*32*3,3是它的深度(即R、G、B),... 查看详情

深度学习之tensorflow——基本使用

一、目前主流的深度学习框架Caffe,TensorFlow,MXNet,Torch,Theano比较库名称开发语言速度灵活性文档适合模型平台上手难易Caffec++/cuda快一般全面CNN所有系统中等TensorFlowc++/cuda/Python中等好中等CNN/RNNLinux,OSX难MXNetc++/cuda快好全面CNN所有系统... 查看详情

《神经网络与深度学习》卷积神经网络cnn及tensorflow代码实现示例

....net/cxmscb/article/details/71023576一、CNN的引入在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连的。当输入层的特征维度变得很高时,这时全连接网络需要训练的参数就会增大很多,计算速度就会变得很慢... 查看详情

深度学习之卷积神经网络(13)densenet

深度学习之卷积神经网络(13)DenseNet SkipConnection的思想在ResNet上面获得了巨大的成功,研究人员开始尝试不同的SkipConnection方案,其中比较流行的就是DenseNet[1]。DenseNet将前面所有层的特征图信息通过SkipConnection... 查看详情

基于cnn卷积神经网络的tensorflow+keras深度学习的人脸识别(代码片段)

基于CNN卷积神经网络的TensorFlow+Keras深度学习的人脸识别前言项目实现效果补充模型数据嵌入模型CNN神经网络模型项目概述项目运行流程核心环境配置项目核心代码详解目录核心代码设置数据集目录收集人脸识别数据——UUID格... 查看详情

tensorflow实战-tensorflow实现卷积神经网络cnn-第5章

第5章-TensorFlow实现卷积神经网络CNN5.1卷积神经网络简介卷积神经网络CNN最初是为了解决图像识别等问题设计的,当然现在的应用已经不限于图像和视频,也可以用于时间序列信号,比如音频信号、文本数据等。在深度学习出现之... 查看详情

深度学习之四:卷积神经网络基础

...取得了令人惊叹的进展,其中发挥重要作用的是卷积神经网络。本节总结了卷积神经的原理与实现方法。1卷积神经网络1.1计算机视觉与深度学习计算机视觉要解决的问题是如何让机器理解现实世界的现象。目前主要处理的问... 查看详情

深度学习之tensorflow

...过程,是将复杂的数据结   构传输至人工智能神经网络中进行分析和处理的过程。 查看详情

深度学习--tensorflow(项目)识别自己的手写数字(基于cnn卷积神经网络)(代码片段)

目录基础理论 一、训练CNN卷积神经网络1、载入数据2、改变数据维度3、归一化4、独热编码5、搭建CNN卷积神经网络 5-1、第一层:第一个卷积层5-2、第二层:第二个卷积层5-3、扁平化5-4、第三层:第一个全连接层5-5、... 查看详情

深度学习之卷积神经网络理论详解(代码片段)

LeNet-5网络LetNet网络的的讲解主要参考1998年计算机科学家YannLeCun发布的一篇论文《Gradientbasedlearningappliedtodocument-recognition》大家可以找到这篇论文结合学习,针对该网络,首先大家需要了解一下图像中的常用操作卷积,... 查看详情

深度学习之tensorflow安装与初体验(代码片段)

...系和概念首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的神经网络结构是浅度学习的模型。浅度学习:层数少于3层,使用全连接... 查看详情

深度学习之图片压缩算法

...图片压缩——TinyNetworkGraphics(TNG)为例,其以深度学习卷积神经网络为内核,在保持相同图片质量的情况下,其图片大小仅为JPEG的45%。本文将和大家分享如何使用深度学习卷积神经网络技术设计图像压缩算法。说 查看详情

深入浅出卷积神经网络及实现!

... 作者:陈桦、夏雨柔、樊亮,Datawhale优秀学习者卷积神经网络CNN是深度学习中的基础知识。本文对CNN的基础原理及常见的CNN网络进行了详细解读,并介绍了Pytorch构建深度网络的流程。最后,以阿里天池零基础入门CV赛事为学... 查看详情

基于深度学习的天气识别算法对比研究-tensorflow实现-卷积神经网络(cnn)|第1例(内附源码+数据)(代码片段)

🥧我的环境:语言环境:Python3深度学习环境:TensorFlow2🥂相关教程:编译器教程:新手入门深度学习|1-2:编译器JupyterNotebook深度学习环境配置教程:新手入门深度学习|1-1:配置深度学习环... 查看详情

深度学习之卷积神经网络cifar10与resnet18实战(代码片段)

...sidualBlock,简称ResBlock)。由于被SkipConnection包围的卷积神经网络需要学习映射ℱ(𝒙)=ℋ(ᵉ 查看详情