TensorFlow中用于卷积的自定义填充

kar*_*TUM 14 python caffe tensorflow

在张量流函数tf.nn.conv2d中,填充选项只有'SAME'和'VALID'.

但是在Caffe的conv层中,有pad选项可以定义要(隐式)添加到输入的每一侧的像素数.

如何在Tensorflow中实现这一目标?

非常感谢你.

Oli*_*rot 34

你可以使用tf.pad()(参见文档)在应用之前tf.nn.conv2d(..., padding="VALID")填充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")
Run Code Online (Sandbox Code Playgroud)

output将有形状[None, 28, 26, 16],因为你只有1的宽度填充.