Custom padding for convolutions in TensorFlow

后端 未结 1 1435
南笙
南笙 2020-12-14 20:04

In tensorflow function tf.nn.conv2d, the padding option just has \'SAME\' and \'VALID\'.

But in the conv layer of Caffe, there is pad option can define the number o

相关标签:
1条回答
  • 2020-12-14 20:34

    You can use tf.pad() (see the doc) to pad the Tensor before applying tf.nn.conv2d(..., padding="VALID") (valid padding means no padding).


    For instance, if you want to pad the image with 2 pixels in height, and 1 pixel in width, and then apply a convolution with a 5x5 kernel:

    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 will have shape [None, 28, 26, 16], because you have only a padding of 1 in width.

    0 讨论(0)
提交回复
热议问题