定义
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)
函数作用是用于tensorflow中的卷积运算
参数
- input:待操作的张量,要求是tensor,结构为[ batch_size, height, width, in_channels ]。计算后的结果是四维的tensor,即常说的特征图(feature map);输入数据类型必须是float32或者float64
- filter:卷积核,要求是tensor,结构为[ filter_height, filter_width, in_channels, out_channels ]。这里的in_channels和input中的in_channels必须相同;数据类型与input一致
- strides:步长,结构是[ 1, strides, strides, 1]。第一维和第四维必须为1,第二第三维为步长,[1, 2, 2, 1]即设步长为2
- padding:填充,结构只有两类:“SAME”, “VALID”。same代表补0填充,会优先在图右侧和下侧补0;valid代表不补0,卷积核没有扫到的部分直接丢弃
- use_cudnn_on_gpu=None:是否使用GPU加速,bool类型,默认为True
- name:给这个指定的操作命名
例子
- 默认batch为1,输入为331的图,通道为1,使用2*2的filter,将图增加到3维,使用SAME padding,步长为2
input_tensor = tf.Variable(tf.random_normal([1,3,3,1])) # b, h, w, c
filter_1 = tf.Variable(tf.ones([2,2,1,3])) # f_h, f_w, in_c, out_c
output = tf.nn.conv2d(input_tensor, filter_1, strides=[1, 2, 2, 1], padding='SAME',
use_cudnn_on_gpu=False)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess