源码:
#coding=utf-8
import tensorflow as tf
# case 2
input = tf.Variable(tf.random_normal([1, 256, 256, 3]))
op1 = tf.layers.conv2d(inputs=input, filters=164, kernel_size=(7, 7), strides=(2, 2),
padding="same", activation=tf.nn.relu)
op2 = tf.layers.conv2d(inputs=input, filters=64, kernel_size=(7, 7), strides=(2, 2),
padding="same", activation=tf.nn.relu)
op3 = tf.layers.conv2d(inputs=input, filters=64, kernel_size=(7, 7), strides=(2, 2),
padding="valid", activation=tf.nn.relu)
op0 = tf.concat([op1, op2], 3)
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
print("case 2")
print('op0:', sess.run(op0).shape)
print('op2:', sess.run(op2).shape)
print('op3', sess.run(op3).shape)
输出:
卷积核大小 :filter*filter,步长:stride,填充:padding,图像大小:h*w
卷积后图像大小 高 height =(h - filter +2*padding)/stride +1
‘same’填充2,向上取整
对op2 height = (256-7+2*2)/2+1 = 127.5 向上取整:128
卷积后维度(1,128,128,64)
‘valid’填充0,向下取整
对op2 height = (256-7)/2+1 = 125.5 向上取整:125
卷积后维度(1,125,125,64)