Python 如何在没有批量大小轴的情况下使用tf.pad?

Python 如何在没有批量大小轴的情况下使用tf.pad?,python,css,tensorflow,padding,Python,Css,Tensorflow,Padding,我正在尝试使用tf.pad来处理形状图像(?,m,N),这里?是批量大小(不固定),而m,N分别是图像高度和宽度。我的tensorflow版本是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:]

我正在尝试使用
tf.pad
来处理形状图像
(?,m,N)
,这里
是批量大小(不固定),而
m
N
分别是图像高度和宽度。我的tensorflow版本是
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://code>不是每个图像
(M,N)
。 如何将
tf.pad
用于tensor
(?,M,N)
(1,1,1)
一起使用,以便在tensorflow版本
1.14
中输出图像的大小
(?,M+2,N+2)


谢谢。

tf.pad
中,paddings是一个具有形状
[n,2]
的整数张量,其中n是张量的秩

因此,您需要更改填充张量,如下所示:

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)

我在TF2.x上测试了代码,但同样的测试也应该适用于TF1.x。

非常感谢!问题很简单,但很敏感:)