È possibile utilizzare tf.pad()
(vedere doc) per tamponare il tensore prima di applicare tf.nn.conv2d(..., padding="VALID")
(il padding valido non significa padding).
Per esempio, se si vuole pad l'immagine con 2 pixel in altezza, e 1 pixel di larghezza, e quindi applicare una convoluzione con un kernel 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
avranno forma [None, 28, 26, 16]
, perché hai solo una spaziatura di 1 in larghezza.
fonte
2016-06-06 14:26:49