You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用索引数组将(128,10,51)的TensorFlow张量转为(128,51)?

解决方案

问题背景

现有形状为(128, 10, 51)的TensorFlow张量A,以及形状为(128,)、元素取值为0-9的ndarray索引数组B。需求是从张量A的第二维度中选取对应索引的元素,转换为形状为(128, 51)的张量,替代现有的for循环实现。

简洁实现方案

单行代码方案

利用TensorFlow的tf.gather函数,结合batch_dims参数可直接完成批量索引选取:

result = tf.gather(A, tf.convert_to_tensor(B), axis=1, batch_dims=1)

代码说明

  • tf.convert_to_tensor(B):将ndarray类型的索引数组B转为TensorFlow张量,适配API要求。
  • axis=1:指定要选取元素的目标维度(即张量A的第二维度,索引从0开始)。
  • batch_dims=1:将前1个维度((128,)的批次维度)设为批量维度,让每个批次样本对应选取B中匹配的索引元素,最终直接输出(128, 51)形状的张量。

内容的提问来源于stack exchange,提问作者Behnam Mahdinia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:13:11