tf.nn.conv2d与tf.nn.max_pool介绍
2018-03-31 13:48
555 查看
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)介绍参数:input:指卷积需要输入的参数,具有这样的shape[batch, in_height, in_width, in_channels],分别是[batch张图片, 每张图片高度为in_height, 每张图片宽度为in_width, 图像通道为in_channels]。filter:指用来做卷积的滤波器,当然滤波器也需要有相应参数,滤波器的shape为[filter_height, filter_width, in_channels, out_channels],分别对应[滤波器高度, 滤波器宽度, 接受图像的通道数, 卷积后通道数],其中第三个参数 in_channels需要与input中的第四个参数 in_channels一致,out_channels第一看的话有些不好理解,如rgb输入三通道图,我们的滤波器的out_channels设为1的话,就是三通道对应值相加,最后输出一个卷积核。strides:代表步长,其值可以直接默认一个数,也可以是一个四维数如[1,2,1,1],则其意思是水平方向卷积步长为第二个参数2,垂直方向步长为1.其中第一和第四个参数我还不是很明白,请大佬指点,貌似和通道有关系。padding:代表填充方式,参数只有两种,SAME和VALID,SAME比VALID的填充方式多了一列,比如一个3*3图像用2*2的滤波器进行卷积,当步长设为2的时候,会缺少一列,则进行第二次卷积的时候,VALID发现余下的窗口不足2*2会直接把第三列去掉,SAME则会填充一列,填充值为0。use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认为true。大概意思是是否使用gpu加速,还没搞太懂。name:给返回的tensor命名。给输出feature map起名字。
转载▼
(感谢原文:http://blog.csdn.net/jasonzzj/article/details/53930074) 定义: Padding在卷积(convolution)和池化(pooling)中都会被用到。在tensorflow比如tf.nn.conv2d,tf.nn.max_pool都有这参数 Valid: 用过滤器在输入的矩阵中按步长移动时候,会把最后的不足部分的列和行抛弃;Same: 先在输入矩阵上下各加个值为0的行,在左右各加个个值为0的列,也就是用0把原先的矩阵包裹一层,然后在移动的时候如果输入矩阵的列或者行长度不够,就用0来补齐
例子看例子比较实际:
以一维向量做例子 输入(input)长度:13 过滤器(Filter)长度:6 步长(Stride)长度:5
最终输出的行列数计算方法out_height=(in_height-filter_height+padding)/stride+1padding是加0的个数。一般图像是加一圈0.同理可得out_weight
tf.nn.max_pool(value, ksize, strides, padding, name=None)
value:池化的输入,一般池化层接在卷积层的后面,所以输出通常为feature map。feature map依旧是[batch, in_height, in_width, in_channels]这样的参数。ksize:池化窗口的大小,参数为四维向量,通常取[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1。ps:估计面tf.nn.conv2d中stries的四个取值也有 相同的意思。stries:步长,同样是一个四维向量。padding:填充方式同样只有两种不重复了。Padding:SAME和VALID详释
转载▼
分类: 神经网络 |
例子看例子比较实际:
以一维向量做例子 输入(input)长度:13 过滤器(Filter)长度:6 步长(Stride)长度:5
"VALID"= 不会增加padding: inputs: 1 2 3 4 5 6 7 8 9 10 11 (12 13) |_____________| (抛弃不要) |______________|
"SAME"= 会用0来做padding (如果步长是1的话,最终输出和输入一样大小): pad| |Pad inputs: 0| 1 2 3 4 5 6 7 8 9 10 11 12 13 |0 0 |_____________| |______________| |_______________|Notes:
"VALID"会但只会抛弃最右边的列或者是最下面的行.
"SAME"水平方向首先会在左右各加一个零,如果最后不够的话,会在右边再加零补齐,以满足最后一次完整的移动。对于垂直方向也是同理。
最终输出的行列数计算方法out_height=(in_height-filter_height+padding)/stride+1padding是加0的个数。一般图像是加一圈0.同理可得out_weight
相关文章推荐
- TF-池化函数 tf.nn.max_pool 的介绍
- TensorFlow--tf.nn.max_pool实现池化操作
- 第一阶段-入门详细图文讲解tensorflow1.4 API-tf.nn.max_pool
- 【TensorFlow】tf.nn.max_pool实现池化操作
- [译] TF-api(1) tf.nn.max_pool
- tf.nn.max_pool 实例
- tf.nn.max_pool
- tf.nn.max_pool作什么用?
- Tensorflow(r1.4)API--tf.nn.max_pool
- tf.nn.max_pool参数含义和用法
- tf.nn.max_pool
- 池化操作 tensorflow tf.nn.max_pool
- tf.nn.max_pool
- TensorFlow实例(5.3)--MNIST手写数字进阶算法(卷积神经网络CNN) 之 最大池化tf.nn.max_pool
- TensorFlow 用 tf.nn.max_pool 实现最大池化操作
- 【TensorFlow】tf.nn.max_pool实现池化操作
- TensorFlow学习笔记(四):tf.nn.max_pool如何实现池化操作?
- tf.nn.max_pool实现池化操作
- TensorFlow:tf.nn.max_pool实现池化操作(转载)
- 【TensorFlow】tf.nn.max_pool实现池化操作