我对tensorflow相对较新,并且在尝试正确索引张量时遇到问题。在图的底部,我试图使用x(它本身是一个包含数组形式的张量,例如[[0,1],[2,3]])来索引y_rt张量(一个人可以认为就像将y_rt张量切片一样。但是,我在将张量转换为数组或列表时遇到了麻烦。我知道有.eval()函数,但是我不能在这里使用它,因为显示的代码发生在.run()调用之前。任何帮助将非常感激。
k
答案 0 :(得分:0)
从1.9版本开始,TensorFlow不支持使用切片符号的数组索引。来自tf.Tensor documentation for __getitem__
:
此操作从张量提取指定区域。该表示法与NumPy相似,但目前仅支持基本索引。这意味着当前不允许使用非标量张量作为输入。
如果您想要比简单标量更高级的索引,tf.boolean_mask
可以帮助您使用布尔数组选择张量元素,tf.gather_nd
可以帮助您使用整数数组选择元素。
请注意,在您的示例中,由x
指定的索引将是带有1-d selection
张量的标量,并且如果使用切片,将适用于切片符号:
x = selection[i]
y_partial = y_rt[:, x, :, :]
但是对于您的每个培训批次,索引到selection
可能都不是您想要的。