在tensorflow函数tf.nn.conv2d中,填充选项只有' SAME'和'有效'。
但是在Caffe的conv层中,pad option可以定义(隐式)添加到输入的每一侧的像素数。
如何在Tensorflow中实现这一目标?
非常感谢。
答案 0 :(得分:33)
您可以在应用tf.pad()
之前使用tf.nn.conv2d(..., padding="VALID")
(请参阅doc)填充Tensor(有效填充表示无填充)。
例如,如果要填充高度为2像素,宽度为1像素的图像,然后应用5x5内核的卷积:
input = tf.placeholder(tf.float32, [None, 28, 28, 3])
padded_input = tf.pad(input, [[0, 0], [2, 2], [1, 1], [0, 0]], "CONSTANT")
filter = tf.placeholder(tf.float32, [5, 5, 3, 16])
output = tf.nn.conv2d(padded_input, filter, strides=[1, 1, 1, 1], padding="VALID")
output
的形状为[None, 28, 26, 16]
,因为您只有1的宽度填充。