卷积与池化

卷积函数:

tf.nn.conv2d(
 input_输入(batch, h, w, channels),
 filter_卷积核(k_h, k_w, k_in, k_out),
 strides_卷积核的移动步长(1,s_h, s_w, 1,
 padding(same:自动补0,步长为1时,输入输出大小相同;
  valid:不自动补0),
 use_cudnn_on_gpu=True,
 data_format='NHWC'
 dilations=[1, 1, 1, 1], 
 name=None
)

input:输入,4维tensor(batch, h, w, channels)

  • batch:一次输入多少张图片,可以是1或者其他数
  • h:输入的高度
  • w:输入的宽度
  • channels:一张图片的通道数,比如一个RGB图像的通道数为3

filter:卷积核 ,4维tensor(k_h, k_w, in, out)

  • in:卷积需要作用输入图片的通道数
  • out:卷积核个数,也称为输出的通道数

卷积层

  • 输入尺寸: W 1 W_1 W1 * H 1 H_1 H1 * D 1 D_1 D1
  • 输出尺寸: W 2 W_2 W2 * H 2 H_2 H2 * D 2 D_2 D2
  • 4个超参数:
    • 卷积核数量K
    • 卷积核尺寸大小F
    • 步长S
    • 零填充P
  • W 2 = ( W 1 − F + 2 P ) / S + 1 W_2 = (W_1-F+2P)/S+1 W2=(W1F+2P)/S+1
  • H 2 = ( H 1 − F + 2 P ) / S + 1 H_2 = (H_1-F+2P)/S+1 H2=(H1F+2P)/S+1
  • D 2 = K D_2 = K D2=K

池化函数:

#最大值池化
tf.nn.max_pool(
 value_池化输入(batch, h, w, channels),
 ksize_池化核的大小(1, k_h, k_w, 1,
 strides_池化核的移动步长(1,s_h, s_w, 1,
 padding,
 data_format='NHWC',
 name=None

池化层

  • 输入尺寸: W 1 W_1 W1 * H 1 H_1 H1 * D 1 D_1 D1
  • 输出尺寸: W 2 W_2 W2 * H 2 H_2 H2 * D 2 D_2 D2
  • 2个超参数
    • 卷积核尺寸大小F
    • 步长S
  • W 2 = ( W 1 − F ) / S + 1 W_2 = (W_1-F)/S+1 W2=(W1F)/S+1
  • H 2 = ( H 1 − F ) / S + 1 H_2 = (H_1-F)/S+1 H2=(H1F)/S+1
  • D 2 = D 1 D_2 = D_1 D2=D1

你可能感兴趣的:(深度学习)