深度学习之卷积神经网络

深度学习之卷积神经网络


卷积神经网络模型结构图

输入层(Input layer)
卷积层(convolution layer)
池化层(pooling layer)
输出层(全连接层+Softmax layer)
在这里插入图片描述

  • 为什么要有卷积层?

卷积不需要展开,保留了三维的结构,但是计算的时候其实也是展开计算的

  • 全连接层的计算方式?

全连接层是展开计算,y=wx+b

一、卷积层

1、提取特征。压缩提纯。
2、卷积层级之间的神经元是局部连接和权值共享,这样大大减少了(w,b)的数量,加快了训练。

卷积核映射到卷积层的过程:

在这里插入图片描述
上图中中间的这一层是卷积核,就是一个w的矩阵。最左边的可以看作是一个输入层,卷积核与其所覆盖的区域的数进行点积,将结果映射到卷积层。
例如上图的例子:
卷积核是 :
-1,-2,-1
0, 0, 0
1, 2, 1
卷积核覆盖的区域的数是:
0, 0, 75
0, 75, 80
0, 75, 80
所以点积(对应位置相乘再相加)后的结果为155

局部连接和权值共享

局部连接:不是全连接
权值共享:如下图,只用了三个权值,这样就大大减少了我们的计算量。
在这里插入图片描述

二、池化层

池化层可以理解为对卷积层输出的特征图进一步特征抽样,通常有两种。Max pooling和Average pooling.
如下图:
在这里插入图片描述

三、Softmax层

softmax层每一个节点都有一个激活函数,可以理解为每个节点输出的一个概率,所有节点概率和为1。
这样输出的最大概率对应的标签就是这张待分类图所对应的标签。
在这里插入图片描述

四、超参

padding:补充边界,在边界补一圈0或1.

1、为了保持边界信息,倘若不填充,边界信息被卷积核扫描的次数远比不上中间信息的扫描次数,这样就降低了边界信息的参考价值了。
2、输入图片的尺寸可能参差不齐,通过padding来使图片的尺寸一致。
在这里插入图片描述

Stride 步幅

定义:卷积核每次移动的大小,默认为1。步幅越大,相对越粗糙。

  • 3
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习卷积神经网络(CNN)详解与代码实现(一) 卷积神经网络(CNN)是深度学习领域中应用广泛的一种神经网络,它通过卷积、池化等操作,能够有效地处理图像、语音、文本等数据类型。本文将从卷积神经网络的基本原理、结构、训练方法等方面进行详细介绍,并通过代码实现,加深读者对卷积神经网络的理解。 一、卷积神经网络的基本原理 卷积神经网络(CNN)的基本原理是通过卷积操作对输入数据进行特征提取,然后通过全连接层对特征进行分类或回归。卷积操作是CNN的核心,它可以有效地减少网络中的参数数量,提高模型的泛化能力。 卷积操作是指将一个卷积核(kernel)与输入数据进行卷积运算,得到一个特征图(feature map)。卷积核是一个小的矩阵,可以通过学习得到,它的作用是对输入数据进行特征提取。卷积操作可以提取出输入数据中的局部特征,不同的卷积核可以提取出不同的特征,从而实现对输入数据的特征提取。 二、卷积神经网络的结构 卷积神经网络的结构包括卷积层、池化层、全连接层等。其中卷积层和池化层是CNN的核心,全连接层用于分类或回归。 1. 卷积层 卷积层是CNN中最重要的层之一,它的作用是对输入数据进行特征提取。卷积层的参数包括卷积核的大小、深度、步长等,其中卷积核的大小和深度是最重要的参数。 卷积层的输入是一个四维张量,分别表示样本数量、图像高度、图像宽度、图像通道数。卷积核是一个三维张量,分别表示卷积核的高度、宽度、深度。 卷积操作可以通过矩阵乘法实现,也可以通过FFT等方法实现,但是前者的方法在卷积核较小时速度较慢,后者在卷积核较大时速度较慢。 2. 池化层 池化层是CNN中另一个重要的层,它的作用是对卷积层的输出进行降维和特征提取。池化操作可以通过最大池化、平均池化等方法实现。最大池化是指在一个池化区域内选取最大的值作为池化结果,平均池化是指在一个池化区域内取平均值作为池化结果。 池化操作可以有效地减少数据的大小,提高模型的泛化能力。但是需要注意的是,过度的池化会导致信息的丢失,从而影响模型的性能。 3. 全连接层 全连接层是CNN中的最后一层,它的作用是将卷积层和池化层的输出进行分类或回归。全连接层是一个标准的神经网络,其中每个神经元都与前一层的所有神经元相连。 全连接层的输出可以通过softmax函数进行分类,也可以通过线性函数进行回归。 三、卷积神经网络的训练方法 卷积神经网络的训练方法与其他神经网络类似,主要包括前向传播和反向传播两个过程。前向传播是指将输入数据通过卷积层、池化层、全连接层等一系列操作,得到最终的输出结果。反向传播是指将输出结果与真实标签进行比较,然后通过梯度下降等方法,不断调整网络参数,使得输出结果更加接近真实标签。 在训练过程中,需要注意的是,卷积神经网络通常需要较长的训练时间和大量的训练数据,以便得到更好的性能。此外,还需要注意选择适当的优化算法、学习率、正则化等参数,以避免过拟合和欠拟合等问题。 四、代码实现 下面是一个简单的卷积神经网络的代码实现,用于对手写数字进行分类。 ```python import tensorflow as tf # 加载数据 mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() # 数据预处理 x_train, x_test = x_train / 255.0, x_test / 255.0 # 定义模型 model = tf.keras.models.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), tf.keras.layers.MaxPooling2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值