2016-06-06 27 views

risposta

26

È 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.