从没有形状的向量生成零矩阵

2024-06-16 10:40:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到一个[None,1,None]形状的张量(第一个None是批量大小,对应于例如[1,1,28]),我想生成一个tf.zeros_like形式的[None,1,None,None]矩阵,其中最后两个None是相同的(因此在示例中是[1,1,28,28]

假设d是形状的向量[None,1,None] 我尝试的是:

z = tf.zeros_like(tf.broadcast_to(d, tf.concat([d.shape, d.shape[-1:]], axis=0)), tf.int32)

其思想是:我将d的形状与d的最后一个形状合并,以保持大小正确,然后将d广播到这些形状以使用广播的结果生成zeros_like。我知道在这种情况下,tf.zeros不起作用,因为它不适用于None形状。 但此方法失败,导致此错误: Tensors in list passed to 'values' of 'ConcatV2' Op have types [<NOT CONVERTIBLE TO TENSOR>, <NOT CONVERTIBLE TO TENSOR>] that don't all match.


Tags: tonone示例tfzerosnot矩阵批量
1条回答
网友
1楼 · 发布于 2024-06-16 10:40:16

如果您有一个三维张量a,并且想要用零填充一个四维张量b,其中b的前三维与a相同,第四维与a的第三维相同,您可以执行以下操作:

s = tf.shape(a)
s = tf.concat([s, s[-1:]], axis=0)
b = tf.zeros(s, a.dtype)

相关问题 更多 >