我是靠谱客的博主 虚幻航空,这篇文章主要介绍【Pytorch】tensor索引另一个tensor(tensor[tensor]),现在分享给大家,希望可以做个参考。

说明

最近在使用pytorch中tensor的时候,遇到了需要使用tensor1[tensor2]的情况,发现了这篇博客,他从代码的角度解释了其工作原理,这里我用图示的方式解释tensor类型为longTensor时的情况

工作原理

  1. 首先,创建两个tensor,如下:
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    import numpy as np import torch x1 = np.array([[1,0,0,1],[1,1,0,1],[0,1,1,0],[0,1,1,1],[1,1,0,0]]) x2 = np.array([[1,0,1],[1,1,1]]) x1= torch.from_numpy(x1).long() x2= torch.from_numpy(x2).long() """ x1:tensor([[1, 0, 0, 1], [1, 1, 0, 1], [0, 1, 1, 0], [0, 1, 1, 1], [1, 1, 0, 0]]) x1.shape:torch.Size([5, 4]) x2:tensor([[1, 0, 1], [1, 1, 1]]) x2.shape:torch.Size([2, 3]) x1[x2]:tensor([[[1, 1, 0, 1], [1, 0, 0, 1], [1, 1, 0, 1]], [[1, 1, 0, 1], [1, 1, 0, 1], [1, 1, 0, 1]]]) """
  2. 说明一点就是x1[x2].shap不一定等于x2[x1].shape,那么我如何在不计算的前提下知道LongTensor1[LongTensor2].shape呢,以二维LongTensor为例,可推出公式如下:LongTensor1[LongTensor2].shape=torch.Size([LongTensor2.shape[0],LongTensor2.shape[1],LongTensor1.shape[1]),即上述
    • x1[x2].shape=torch.Size([2, 3, 4])
    • x2[x1].shape=torch.Size([5, 4, 3])
  3. 动态图说明
    动态图演示
    可以看到由于x2只包含0和1,所以在取索引的时候,只会索引x1的前两维

最后

以上就是虚幻航空最近收集整理的关于【Pytorch】tensor索引另一个tensor(tensor[tensor])的全部内容,更多相关【Pytorch】tensor索引另一个tensor(tensor[tensor])内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(105)

评论列表共有 0 条评论

立即
投稿
返回
顶部