我正在尝试将tf.pad
用于形状为(?, M, N)
的图像,这里?
是批次大小(不固定),M
,N
分别是图像的高度,宽度。我的张量流版本为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
的大小?
谢谢。
答案 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上也应如此。