贵阳网站建设贵阳网站建设哪家好,vi设计品牌案例ppt,摄影海报设计图片,网站建设需要什么东西#xff08;一#xff09;网络结构
一个卷积神经网络里包括5部分——输入层、若干个卷积操作和池化层结合的部分、全局平均池化层、输出层#xff1a; ● 输入层#xff1a;将每个像素代表一个特征节点输入进来。 ● 卷积操作部分#xff1a;由多个滤波器组合的卷积层。 …一网络结构
一个卷积神经网络里包括5部分——输入层、若干个卷积操作和池化层结合的部分、全局平均池化层、输出层 ● 输入层将每个像素代表一个特征节点输入进来。 ● 卷积操作部分由多个滤波器组合的卷积层。 ● 池化层将卷积结果降维。 ● 全局平均池化层对生成的feature map取全局平均值。 ● 输出层需要分成几类相应的就会有几个输出节点。每个输出节点都代表当前样本属于的该类型的概率。
(二)卷积操作
卷积分为窄卷积、全卷积和同卷积。
1步长
步长stride表示卷积核在图片上移动的格数. ● 当步长为1的情况下如图中第二行右边的feature map块里的第二个元素3是由卷积核计算完第一个元素4右移一格后计算得来的相当于图片中的前3行和第1到第4列围成的3×3矩阵与卷积核各对应元素进行相乘相加操作31×11×00×11×01×11×00×11×01×1。 ● 当步长为2的情况下就代表每次移动2个格最终会得到一个如图8-5中第二行左边的2×2矩阵块的结果。
2窄卷积
窄卷积valid卷积从字面上也可以很容易理解即生成的feature map比原来的原始图片小它的步长是可变的。假如滑动步长为S原始图片的维度为N1×N1那么卷积核的大小为N2×N2卷积后的图像大小**(N1-N2)/S1×(N1-N2)/S1**。
3同卷积
同卷积same卷积代表的意思是卷积后的图片尺寸与原始图片的尺寸一样大同卷积的步长是固定的滑动步长为1。一般操作时都要使用padding技术外围补一圈0以确保生成的尺寸不变。
4全卷积
全卷积full卷积也叫反卷积就是把原始图片里的每个像素点都用卷积操作展开。如图示白色的块是原始图片浅色的是卷积核深色的是正在卷积操作的像素点。反卷积操作的过程中同样需要对原有图片进行padding操作生成的结果会比原有的图片尺寸大。
(三)池化层
池化的主要目的是降维即在保持原有特征的基础上最大限度地将数组的维数变小。池化中只关心滤波器的尺寸不考虑内部的值。算法是滤波器映射区域内的像素点取取平均值或最大值。
1均值池化
就是在图片上对应出滤波器大小的区域对里面的所有不为0的像素点取均值。这种方法得到的特征数据会对背景信息更敏感一些。注意一定是不为0的像素点这个很重要。如果把带0的像素点加上则会增加分母从而使整体数据变低。
2最大池化
最大池化就是在图片上对应出滤波器大小的区域将里面的所有像素点取最大值。这种方法得到的特征数据会对纹理特征的信息更敏感一些。
3反向传播
对于最大池化直接将其误差还原到对应的位置其他用0填入对于均值池化则是将其误差全部填入该像素对应的池化区域。该部分的详细算法也与反池化算法完全相同
(四)卷积神经网络的相关函数
在TensorFlow中使用tf.nn.conv2d来实现卷积操作使用tf.nn.max_pool进行最大池化操作。通过传入不同的参数来实现各种不同类型的卷积与池化操作。
1 卷积函数tf.nn.conv2d tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpuNone, nameNone)● input指需要做卷积的输入图像它要求是一个Tensor具有[batch, in_height,in_width, in_channels]这样的形状shape具体含义是“训练时一个batch的图片数量图片高度图片宽度图像通道数”注意这是一个四维的Tensor要求类型为float32和float64其中之一。
● filter相当于CNN中的卷积核它要求是一个Tensor具有[filter_height,filter_width, in_channels, out_channels]这样的shape具体含义是“卷积核的高度滤波器的宽度图像通道数滤波器个数”要求类型与参数input相同。有一个地方需要注意第三维in_channels就是参数input的第四维。
● strides卷积时在图像每一维的步长这是一个一维的向量长度为4。
● padding定义元素边框与元素内容之间的空间。string类型的量只能是SAME和VALID其中之一这个值决定了不同的卷积方式padding的值为’VALID’时表示边缘不填充当其为’SAME’时表示填充到滤波器可以到达图像边缘。
● use_cudnn_on_gpu:bool类型是否使用cudnn加速默认为true
● 返回值tf.nn.conr2d函数结果返回一个Tensor这个输出就是常说的feature map。
1.1padding规则介绍
1padding为VALID情况 output_width(in_width-filter_width 1)/strides_ width结果向上取整output_height(in_height-filter_height1)/strides_height结果向上取整● 输入的尺寸中高和宽定义成in_height、in_width。
● 卷积核的高和宽定义成filter_height、filter_width。
● 输出的尺寸中高和宽定义成output_height、output_width。
● 步长的高宽方向定义成strides_height、strides_ width。
**2padding为SAME情况**out_height in_height / strides_height结果向上取整out_width in_width / strides_ width结果向上取整2.池化函数tf.nn.max_poolavg_pool tf.nn.max_pool(input, ksize, strides, padding, nameNone) tf.nn.avg_pool(input, ksize, strides, padding, nameNone) ● value需要池化的输入一般池化层接在卷积层后面所以输入通常是feature map依然是[batch, height, width, channels]这样的shape。 ● ksize池化窗口的大小取一个四维向量一般是[1, height, width, 1]因为我们不想在batch和channels上做池化所以这两个维度设为了1。 ● strides和卷积参数含义类似窗口在每一个维度上滑动的步长一般也是[1, stride,stride, 1]。 ● padding和卷积参数含义一样也是取VALID或者SAME, VALID是不padding操作SAME是padding操作。 ● 返回一个Tensor类型不变shape仍然是[batch, height, width, channels]这种形式。