卷积函数:
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=(W1−F+2P)/S+1
- H 2 = ( H 1 − F + 2 P ) / S + 1 H_2 = (H_1-F+2P)/S+1 H2=(H1−F+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=(W1−F)/S+1
- H 2 = ( H 1 − F ) / S + 1 H_2 = (H_1-F)/S+1 H2=(H1−F)/S+1
- D 2 = D 1 D_2 = D_1 D2=D1