关于ResNet代码中的一点疑惑
来源:4-4 VGG-ResNet实战(1)
DeepTec
2018-11-26
老师,您好 ResNet 这段代码里 假如进行降采样过程时,步长为(2,2)将图像大小变为原来一半,但conv1 中pading 为same 不就是补零使输入图像和输出图像大小一致嘛?麻烦老师帮我解答一下嘛?非常感谢
def residual_block(x, output_channel):
""“residual connection implementation”""
input_channel = x.get_shape().as_list()[-1]
if input_channel * 2 == output_channel:
increase_dim = True
strides = (2, 2)
elif input_channel == output_channel:
increase_dim = False
strides = (1, 1)
else:
raise Exception(“input channel can’t match output channel”)
conv1 = tf.layers.conv2d(x,
output_channel,
(3,3),
strides = strides,
padding = ‘same’,
activation = tf.nn.relu,
name = ‘conv1’)
2回答
-
CrazyCat岩
2018-12-03
padding:"valid" 表示不够卷积核大小的块就丢弃,"same"表示不够卷积核大小的块就补0。老师在视频里说过,因为实验数据时32*32,是可以除尽的,所以不存在数据丢失问题,因此same或valid无所谓。
00 -
慕仰3701486
2018-11-26
这个same参数补零补多少是根据卷积核的大小来决定的,比如一个nxn的卷积核,被卷积的特征图的上下左右需要补不超过n/2的最大整数层的零,比如3x3的卷积核被卷积的特征地图上下左右需要各补1层零,当卷积步长为1x1时,特征图尺寸不发生变化,当步长为2x2时特征图为原来的1/2
00
相似问题