如何在没有批处理尺寸轴的情况下使用tf.pad?

时间:2020-05-11 11:49:35

标签: python css tensorflow padding

我正在尝试将tf.pad用于形状为(?, M, N)的图像,这里?是批次大小(不固定),MN分别是图像的高度,宽度。我的张量流版本为1.14

例如,如果输入x(带有dtype=tf.float32)来自MNIST,则M=N=28的批量大小为? : (?, M, N)

要使用填充尺寸: (1,1,1,1)填充(零)此图像,使输出尺寸为(?, 30,30),我使用以下代码:

paddings = tf.constant([[1,1], [1,1]])

output = tf.pad(x[1:], paddings, "CONSTANT", constant_values = 0)

但是它不起作用。我认为这是因为x[1:]不是每个图像(M,N)。 如何使用tf.pad(?, M, N)进行(1,1,1,1)张量,以便在tensorflow版本(?,M + 2,N + 2)中输出图像1.14的大小?

谢谢。

1 个答案:

答案 0 :(得分:0)

tf.pad填充中是形状为[n, 2]的整数张量,其中n是张量的秩。 https://www.tensorflow.org/api_docs/python/tf/pad

因此,您需要像以下那样更改填充张量:

img = tf.random.uniform((1,28,28))
print(img.shape)

>>> (1, 28, 28)

paddings = tf.constant([[0, 0,], [1, 1], [1, 1]])
img_padded = tf.pad(img, paddings)

print(img_padded.shape)

>>> (1, 30, 30)

我在tf 2.x上测试了代码,但在tf 1.x上也应如此。