伊因苏姆形状不详

2024-10-01 22:43:17 发布

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

我的问题是从一个numpy列表在tensorflow中创建一个列表时开始的。我发现的最好方法是创建一个包含列表中所有条目的矩阵,根据: https://datascience.stackexchange.com/questions/15056/how-to-use-lists-in-tensorflow

所以每一行代表我的numpy列表中的一个元素,总共有N个元素(或张量)。在下面的例子中,我有两个列表,由矩阵X1X2表示,每个张量(或列表)的所有形状都用另一个矩阵表示,分别称为shapeX1和{}。在

我用shapeX1和{}中的形状信息重塑X1和{}(表示两个列表的第一个元素)的第一行,然后计算这两行之间的tf.einsum,如下所示:

X1 = tf.placeholder(dtype=tf.float64, shape=(N,M1))
shapeX1 = tf.placeholder(dtype=tf.int32, shape=(N,3))
X2 = tf.placeholder(dtype=tf.float64, shape=(N,M2))
shapeX2 = tf.placeholder(dtype=tf.int32, shape=(N,3)) 
tensX1 = tf.reshape(X1[0,:], shape=[shapeX1[0,0],shapeX1[0,1],shapeX1[0,2]]) 
tensX2 = tf.reshape(X2[0,:], shape=[shapeX2[0,0],shapeX2[0,1]])
P = tf.einsum('ijk,jk->ik', tensX1, tensX2)

对于表达式tensX1tensX2,每个张量的维数都与计算兼容。但是我得到了一个错误tf.einsum(就在下面):

ValueError: Cannot take the length of Shape with unknown rank.

可能是因为tensX1tensX2的维数都未知:

^{pr2}$

在我的例子中,每个张量的形状是不一样的,即shapeX1(或shapeX2)的每一行都不一定具有相同的维数。 所以我之前不能给它下定义。在

求你了 我怎样才能修好它?有更好的方法吗?在


Tags: 元素列表tf矩阵placeholder形状x1x2

热门问题