- 卷积神经网络结构(CNN Convolutional neural network)
- 输入层
- 将每个像素代表一个特征节点输入到网络中
- 卷积层
- 卷积运算的主要目的是使原信号特征增强,并降低噪音
- 步长
- 表示卷积核在图片上移动的格数
- 步长大于一,是降维的一张方法
卷积后图片的尺寸,步长为S,原始图片尺寸为[N1,N1],卷积核大小为[N2,N2] [(N1-N2)/S+1,(N1-N2)/S+1]
- 方法
- 0填充
- 通过对55的灰度图添加边缘,使33的卷积层转化为5*5的卷积层
- 多通道卷积
- 通过不同的卷积提取不同的特征
- 将这些特征图相同位置上的值相加,生成一张特征图
- 加偏置,生成最终特征图
- 0填充
- 降采样层
- 降低网络训练参数及模型的过拟合程度
- 可以通过池化进行降采样,但池化不是唯一的降采样
- 池化
- 计算图像一个区域上的某个特定特征的平均值或最大值
- 均值池化
- 对池化区域内的像素点取均值
- 对背景信息更加敏感
- 最大池化
- 对池化区域内的像素点取最大值
- 对纹理特征信息更加敏感
- 全连接层
- 对生成的特征进行加权
- softmax层
- 获得当前样例属于不同类别的概率
- 输入层
- 在Tensorflow中的实现
- 卷积函数
- tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu,name)
- input
- 需要做卷积的输入数据,这是一个4维的张量[batch,in_height,in_width,in_channels],要求类型为float32或者float64
- batch为图像的数量
- in_height/in_width图像的尺寸
- inchannels 图像的通道,如果是彩色图像,value为3,灰度图像,value=1
- filter
- 卷积核 [filter_height,filter_width,in_channels,out_channels]
- filter_height/filter_width 图像的尺寸
- in_channels/out_channels 输入的通道数和输出的通道数
- strides
- 图像每一维的步长,是一个一维向量,长度为4
- padding
- 定义元素边框与元素内容之间的空间
- same表示边缘填充,适用于全尺寸操作
- valid表示边缘不填充
- use_cudnn_on_gpu
- bool类型,是否使用cudnn加速
- name
- 该操作的名称
tf.nn.depthwise_conv2d(input,filter,strides,padding,name)
tf.nn.separable_conv2d(input,depthwise_filter,pointwise_filter,strides,padding,name)
- 该操作的名称
- input
- tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu,name)
- 池化函数
- 最大池化
- tf.nn.max_pool(value,ksize,strides,padding,name)
- 平均池化
- tf.nn.avg_pool(value,ksize,strides,padding,name)
- 参数
- value
- 需要池化的输入,一般池化层接在卷积层后面,所以输入通常是conv2d所输出的feature map,依然是4维的张量[batch,in_height,in_width,in_channels]
- ksize
- 池化窗口大小,一遍不在batch(批处理)和channel(通道)上做池化,ksize一般为[1,height,width,1]
- strides
- 图像每一维的步长,是一个一维向量,长度为4
- padding
- 同卷积函数
- name
- 操作名称
- value
- 最大池化
- 卷积函数
卷积神经网络结构及其实现
最新推荐文章于 2024-07-28 18:43:21 发布