Tensor列表索引本质

张量列表索引本质
单列表索引

将原张量shape对应位置数字更改为索引列表的形状

python 复制代码
data = torch.randn((9, 512, 30))
index_list = [0, 1, 3]
print(data[:, index_list].shape)
'''
[[9, 3, 30]]
'''


# torch.Size([1, 6, 5])
index2_list = torch.IntTensor([[[4, 5, 6, 7, 8],
                               [4, 5, 6, 7, 8],
                               [4, 5, 6, 7, 8],
                               [4, 5, 6, 7, 8],
                               [4, 5, 6, 7, 8],
                               [4, 5, 6, 7, 8]]])
print(data[:, index2_list].shape)
# torch.Size([6, 1, 6, 5, 30])
多列表索引

双列表索引本质就是索引列表之间通过广播机制,达成一致。

python 复制代码
data = torch.randn((6, 512, 30))
# index1: torch.Size([1, 6, 5])
index1 = torch.IntTensor([[[4, 5, 6, 7, 8],
                           [4, 5, 6, 7, 8],
                           [4, 5, 6, 7, 8],
                           [4, 5, 6, 7, 8],
                           [4, 5, 6, 7, 8],
                           [4, 5, 6, 7, 8]]])

# index2: torch.Size([5])
index2 = torch.IntTensor([0, 1, 2, 3, 4])


# 双列表索引
print(data[index1, index2].size())
'''
torch.Size([1, 6, 5, 30])
'''

# 三列表索引
print(data[index1, index2, index1].size())
'''
torch.Size([1, 6, 5])
'''
列表索引本质

多列表是先广播。

如果是单列表:

  • [1] 返回:[data[1]]

  • [1, 2, 3], 返回:[data[1], data[2], data[3]]

  • [[1, 2, 3]],返回: [ [ data[1], data[2], data[3] ] ]

如果是双列表:

  • [1], [2] : 返回:[ data[1, 2] ]
  • [[1]], [1, 2] : 先广播:[[1, 1]], [[1, 2]] 重叠 [[(1,1), (1, 2)]] 返回: [ [ data[1, 1], data[1,2] ] ]

多列表以此类推。

相关推荐
OpenTiny社区4 分钟前
茶思屋直播|TinyEngine+AI:聚焦主航道,在实践中探索低代码技术黑土地
人工智能·低代码
chenkangck501 小时前
AI大模型之旅--milvus向量库安装
人工智能·aigc·milvus
学习前端的小z1 小时前
【AI视频】Runway:Gen-2 图文生视频与运动模式详解
人工智能·aigc·音视频
SpikeKing2 小时前
LLM - 理解 多模态大语言模型(MLLM) 的 指令微调(Instruction-Tuning) 与相关技术 (四)
人工智能·语言模型·指令微调·数据调整·自指令·数据混合·instruction
开MINI的工科男3 小时前
【笔记】自动驾驶预测与决策规划_Part3_路径与轨迹规划
人工智能·笔记·自动驾驶·预测与决策
xuanyu226 小时前
Linux常用指令
linux·运维·人工智能
静心问道6 小时前
WGAN算法
深度学习·算法·机器学习
凡人的AI工具箱6 小时前
AI教你学Python 第11天 : 局部变量与全局变量
开发语言·人工智能·后端·python
晓星航6 小时前
Docker本地部署Chatbot Ollama搭建AI聊天机器人并实现远程交互
人工智能·docker·机器人
Kenneth風车7 小时前
【机器学习(五)】分类和回归任务-AdaBoost算法-Sentosa_DSML社区版
人工智能·算法·低代码·机器学习·数据分析