cnn算法介绍,cnn定义
平时不关心的细节我也不知道,所以每一个参数我都在认真对待。
首先,tensorflow包含哪些卷积运算?
3359张量flow.Google.cn/API _ docs/python/TF/nn/conv 2d
TF.nn.conv2d(input,filter,steps,padding,use_cudnn_on_gpu=True,data_format=NHWC ,dilution g其实就是固定你输入的格式。当NHWC对应于您的输入数据的尺寸[批量大小,高度,宽度,通道],[
其实大踏步中的参数和这个data_format是一一对应的。你什么意思?也就是说,当采用NHWC模式和大步数=[a,b,c,d]时,卷积核偏移过程会发生什么变化?在该批次的维度上,根据步长=a的大小进行移动计算.同样,在每个HWC维度上移动的步长是B C D,这里a和d的值都是1,因为batch和channel必须分开计算。c的值可以根据情况变化,它们的值直接关系到输出特征图的维数。
我们来看看两个参数的计算方法,padding=same和valid。
参考文献:3359 www . Jian 1621 c7e
假设输入图像尺寸为w * h。
内核大小为k _ h * k _ w。
将h方向的步幅设置为h,将W方向的步幅设置为W.
请求新输出特性图的大小、n_h和n_w。
在有效模式下,他只修改原始绘图。
所以n_h=(h-k_h )/h向上取整,加1;
N_w=(w-k_w )/h向上取整加1;
同样的模式,他在填充的时候会自动加0。
那么什么时候有必要呢?首先根据公式n_h=H/h和n_w=W/w进行舍入得到最终输出n_h和n_w,根据需要将输出n_h和n_w按回原位,需要补0。
Pad_need_H=(n_h -1) * h K_h-H在H方向
要添加到矩阵中每行上方的像素数如下:
Pad_need_H/2整形
要添加到矩阵每一行下面的像素数是
pad_need_H -pad_need_H/2
也是在w方向
源代码如下所示。
例如,输入特征映射为4*4,内核大小为1*1,步长为1,1,1。
补充图纸如下
这里画的对角线用零填充。
输入特征图是2 * 5,内核大小是2*2,步幅是[1,2,1,1]
所需的图表如下
最后一列是必须填充的0值,最终输出的特征图是1*5。
欢迎补充。