其他分享
首页 > 其他分享> > 【TensorFlow框架】理解tf.nn.conv2d、max_pool卷积与池化方法

【TensorFlow框架】理解tf.nn.conv2d、max_pool卷积与池化方法

作者:互联网

转载请附上原文出处链接和本声明。

conv2d:https://blog.csdn.net/zuolixiangfisher/article/details/80528989

max_pool:https://blog.csdn.net/m0_37586991/article/details/84575325

conv2d方法定义

tf.nn.conv2d (input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)

参数:

代码解释

import tensorflow as tf
# case 1
# 输入是1张 3*3 大小的图片,图像通道数是5,卷积核是 1*1 大小,数量是1
# 步长是[1,1,1,1]最后得到一个 3*3 的feature map
# 1张图最后输出就是一个 shape为[1,3,3,1] 的张量
input = tf.Variable(tf.random_normal([1,3,3,5]))
filter = tf.Variable(tf.random_normal([1,1,5,1]))
op1 = tf.nn.conv2d(input, filter, strides=[1,1,1,1], padding='SAME')


# case 2 考虑步长  
# 输入是1张 5*5 大小的图片,图像通道数是5,卷积核是 3*3 大小,数量是7
# 步长是[1,2,2,1]最后得到7个 3*3 的feature map (考虑边界)
# 1张图最后输出就是一个 shape为[1,3,3,7] 的张量
input = tf.Variable(tf.random_normal([1,5,5,5]))  
filter = tf.Variable(tf.random_normal([3,3,5,7]))  
op7 = tf.nn.conv2d(input, filter, strides=[1, 2, 2, 1], padding='SAME')  

max_pool方法定义

tf.nn.max_pool(value, ksize, strides, padding, name=None)

参数是四个,和卷积很类似:

返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式

图解举例:

最初的矩阵是这样的,维度是[2, 4, 4]

经过reshape(1,4,4,2)操作后,变成下面这样,作为输入,矩阵的含义为 (batch_size, height, width, channels),这里的channel数为2,所以有两个通道,红色代表channel 1,蓝色代表channel 2。

用k_size 维度是[1, 2, 2, 1]的窗口进行池化,形状如下,标绿的数字表示正在进行池化的值

得到结果

标签:nn,卷积,max,height,filter,strides,池化,tf,channel
来源: https://blog.csdn.net/qq_39726927/article/details/112517942