Python 如何获得TensorFlow中张量的特定行?

Python 如何获得TensorFlow中张量的特定行?,python,numpy,tensorflow,Python,Numpy,Tensorflow,我有几个张量: logits:这个张量包含最终的预测分数 tf.Tensor 'MemN2N_1/MatMul_3:0' shape=(?, 18230) dtype=float32 最终的预测计算为predicted_op=tf.argmax(logits,1,name=“predicted_op”) 现在我想把预测限制在一些特定的列中。以下两个张量包含我要从中选择的列索引 self.\u故事属于这一类型 tf.Tensor 'stories:0' shape=(?, 12, 110) dt

我有几个张量:

logits:这个张量包含最终的预测分数

tf.Tensor 'MemN2N_1/MatMul_3:0' shape=(?, 18230) dtype=float32
最终的预测计算为predicted_op=tf.argmax(logits,1,name=“predicted_op”)

现在我想把预测限制在一些特定的列中。以下两个张量包含我要从中选择的列索引

self.\u故事属于这一类型

tf.Tensor 'stories:0' shape=(?, 12, 110) dtype=int32
self.\u查询的类型为

tf.Tensor 'queries:0' shape=(?, 110) dtype=int32
这里的110列是我想要限制登录的索引号。例如,如果logits=[[10,20,30,40,50]、[10,20,30,40,50]、[10,20,30,40,50]和self.[u stories=[[1,4,…]、[1,2,4,…]、[0,4,…]、[2,4,…]和self.\u查询=[[1,4…]、[2,4,…],]那么logits应该看起来像[[20,30,50]、[10,30,50]…]


如何在tensorflow中执行这种索引过滤

您是否尝试了
tf.equal
?这将比较两个张量,并创建一个新的张量,其中包含True(如果相等),False(如果不相等)

使用此布尔张量输入
tf。选择
,根据第一步中创建的布尔值,从一个张量或另一个张量中选择元素


没有深入研究您提供的特定形状,但通过这两种操作,您可以创建您想要的流。

您是否尝试过
tf.equal
?这将比较两个张量,并创建一个新的张量,其中包含True(如果相等),False(如果不相等)

使用此布尔张量输入
tf。选择
,根据第一步中创建的布尔值,从一个张量或另一个张量中选择元素

没有深入研究您提供的特定形状,但通过这两种操作,您可以创建您所要求的流。

试试

行索引=[1]
行=tf.gather(tf.constant([[1,2],[3,4]]),行索引)
tf.Session().run(row)#返回[[3,4]]
可以使用以下方法删除大小为1的前导尺寸标注:

试试看

行索引=[1]
行=tf.gather(tf.constant([[1,2],[3,4]]),行索引)
tf.Session().run(row)#返回[[3,4]]
可以使用以下方法删除大小为1的前导尺寸标注:

你可以用
tf.slice(输入、开始、大小、名称=无)
。 有关更多详细信息,请参阅TensorFlow文档: 您可以使用
tf.slice(输入、开始、大小、名称=无)
。 有关更多详细信息,请参阅TensorFlow文档:

您好,请提供链接周围的上下文,以防链接中断?非常感谢。您好,请您提供链接周围的上下文,以防它断开?非常感谢。
row = tf.squeeze(row, squeeze_dims=0)