Acolchado personalizado para convoluciones en TensorFlow

En la función de tensorflow tf.nn.conv2d , la opción de relleno solo tiene ‘SAME’ y ‘VALID’.

Pero en la capa de convección de Caffe, hay una opción de relleno que puede definir el número de píxeles que se agregarán (implícitamente) a cada lado de la entrada.

¿Cómo lograr eso en Tensorflow?

Muchas gracias.

Puede usar tf.pad() (consulte el documento ) para rellenar el Tensor antes de aplicar tf.nn.conv2d(..., padding="VALID") (el relleno válido significa que no hay relleno).


Por ejemplo, si desea rellenar la imagen con 2 píxeles de altura y 1 píxel de ancho, y luego aplicar una convolución con un kernel de 5×5:

 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 tendrá forma [None, 28, 26, 16] , porque solo tiene un relleno de 1 de ancho.