tf.nn.conv2d究竟是如何运作的

其作用是给定一个4维的输入和一个四维的卷积核,计算得到一个四维的卷积结果

先看看参数:

def conv2d(input,
          filter,
          strides, 
          padding, 
          use_cudnn_on_gpu=True, 
          data_format="NHWC", 
          dilations=[1, 1, 1, 1], 
          name=None)

input:被卷积对象,一个四维的输入张量,默认的维度顺序是[batch,in_height,in_width,in_channels],可以根据参数‘data_format’的值进行修改。数据类型只能是‘half’,'bfloat16','float32','float64'中的一种

filter:卷积核,也是四维[filter_height,filter_width,in_channels,out_channels],其中的in_channels必须与input中的inchannels一致,

      (filter_height,filter_width)就是我们能想到的在input上移动的小方块的,out_channels是对应于一个输入你希望它有几个输              出,注意out_channels与in_channels没有必然联系,因为计算时多个in_channels的结果会相加到一个输出结果中

strides:长度为4的列表,卷积时在每一维上滑动的步数,每一分量对应input每一维的滑动步数,但第0维和第3维上的值必须是                1,即对一批数据中每个输入通道上的数据都要进行计算。一般让水平和竖直的滑动步数相同,即strides=                                       [1,stride,stride,1]

padding:指定卷积方式,是‘SAME’的话卷积结果与input的维度相同(通过在input中补0来实现),是‘VALID’的话就不补0

use_cudnn_on_gpu:是否用GPU加速,默认是

data_format:输入数据的组织方式,默认是‘NHWC’,即[batch,height,width,channels],也可选择用'NCHW',                                   

                     即[batch,channels,height,width]

dilations:长度为4的一维张量,.The dilation factor for each dimension of`input`. If set to k > 1, there will be k-1      
          skipped cells between each filter element on that dimension.  Dilations in the batch and depth dimensions 
          must be 1.(这个不太理解)
name: A name for the operation (optional)

 

 

 

你可能感兴趣的:(tf.nn.conv2d究竟是如何运作的)