pytorch中的矩阵切片操作完全讲解

这篇具有很好参考价值的文章主要介绍了pytorch中的矩阵切片操作完全讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们经常需要从2维或3维tensor中进行切片操作,比如从mask模型中取出mask所在位置的向量。

Talk is cheap, show me code. 

以下所有维度从0开始,3维即 0,1,2

import torch 


x=torch.tensor([[1,2,3],[4,5,6],[7,8,9]])

print(x[[1,2],[0,2]])  # 第0维取  1,2即 [4,5,6],[7,8,9], 在取出的第0维中,分别取第0个和2个,即4,9, 输出  [4,9]

# tensor([4, 9])

# 当第一维不指定值时,表示第一维的每一个都按第二维取值,如

print(x[:,[0,2]])   #会输出第一维每行的第0,2个,即,即 3*2 =6个值 

'''
tensor([[1, 3],
        [4, 6],
        [7, 9]])
'''


print(x[[1,2],[[0],[2]]]) # 第0维取 1,2即[4,5,6],[7,8,9],在这两个中,取两次,第一次取它们的第0个元素,第二次取它们的第2个元素,所以是[4,7],[6,9]

#tensor([[4, 7],
#       [6, 9]])



y=torch.tensor([
                [[1,2,3],[4,5,6],[7,8,9]],
                [[11,12,13],[14,15,16],[17,18,19]],
                [[21,22,23],[24,25,26],[27,28,29]]
                
                ])

print(y.shape)

print(y[[0,1,2],[0,1,1]])  # 只对第0,1维选择,第2维保持原样,输出 


'''

tensor([[ 1,  2,  3],
        [14, 15, 16],
        [24, 25, 26]])

'''

pytorch 切片,pytorch,pytorch,矩阵,python

-----------------------------------------------------

另外,pytorch的函数已经为 这种切片操作准备好了,用以下代码:

batch["loss_ids "] 是 mask的位掩 码,对应的是 如 [0,0,0,1,0,0,0] 这样的形式,值 为1的位置表示是mask。

 outputs = outputs[torch.where(batch['loss_ids']>0)]

本质上的操作是 outputs[[1,2,3,4...],[3,3,3,3]]

torhc.where输出 的是二维tensor,第一位是行号,第二位是在对应行的mask位置,直接符合切片操作的要求,直接使用

其它矩阵操作参考: pytorch索引、切片、连接和换位_逝去〃年华的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-622836.html

到了这里,关于pytorch中的矩阵切片操作完全讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pytorch中的矩阵乘法操作:torch.mm(), torch.bmm(), torch.mul()和*, torch.dot(), torch.mv(), @, torch.matmul()

    😄 无聊整理下torch里的张量的各种乘法相关操作。 1、让所有输入张量都向其中shape最长的矩阵看齐,shape不足的部分在前面加1补齐。 2、两个张量的维度要么在某一个维度一致,若不一致其中一个维度为1也可广播。否则不能广播。【如两个维度:(4, 1, 4)和(2, 1)可以广播,因

    2024年02月04日
    浏览(25)
  • Opencv中的开运算和闭运算操作讲解(python实现)

    https://mydreamambitious.blog.csdn.net/article/details/125265431 开运算=腐蚀+膨胀(顺序不可颠倒) (1)为什么开运算可以去白噪点呢? 根据腐蚀的原理,使用一个给定大小的卷积核(结构单元)对图像进行卷积,操作是用卷积核(结构元素)B与其覆盖的二值图像A做“与”操作,如果结

    2024年02月07日
    浏览(29)
  • 理解 Go 中的切片:append 操作的深入分析(篇2)

    理解 Go 语言中 slice 的性质对于编程非常有益。下面,我将通过代码示例来解释切片在不同函数之间传递并执行 append 操作时的具体表现。 本篇为第 2 篇,当切片的容量 cap 不够时 输出: 解释:在 test1 函数中,我们首先将 slice2 的第一个元素设为 1(这个更改也反映在 slice1

    2024年02月13日
    浏览(26)
  • python中的切片

    目录 一.切片的基础用法 二.切片是一个伪独立的对象  三.切片可作为占位符         众所周知,我们可以通过索引来查找序列类型(字符串,列表,元组...)中的单个元素。而 切片是一种截取索引片段的技术,借助切片技术,我们可以十分灵活的处理序列类型的对象。  

    2024年02月09日
    浏览(29)
  • Python的切片操作详细用法解析

    在利用Python解决各种实际问题的过程中,经常会遇到从某个对象中抽取部分值的情况,切片操作正是专门用于完成这一操作的有力武器。理论上而言,只要条件表达式得当,可以通过单次或多次切片操作实现任意切取目标值。切片操作的基本语法比较简单,但如果不彻底搞清

    2024年02月02日
    浏览(38)
  • Python列表操作指南:索引、切片、遍历与综合应用

    列表(List)是Python中最常用的数据结构之一,它可以存储多个元素,并且支持对元素的索引和切片操作。本文将介绍列表的基本操作和常用方法。 通过方括号 [] 来创建一个列表,可以是空列表或包含元素的列表。例如: 列表中的元素按照插入顺序存储,并且每个元素都有一

    2024年02月09日
    浏览(36)
  • pytorch中的矩阵的转置问题

    我在我的pytorch专栏发布了一期pytorch入门之tensor,介绍了torch.tensor()的一些创建方式和常用方法,其中就有矩阵的转置方法----tensor.t()、tensor.transpose()和tensor.permute()。我只是用少量语言和代码介绍了这三种方法的用法,但其中的转置原理没有说清。今天咱们就来絮叨絮叨~ 相信

    2023年04月08日
    浏览(24)
  • 掌握Python的X篇_16_list的切片、len和in操作

    接上篇掌握Python的X篇_15_list容器的基本使用,本篇进行进一步的介绍。 Python中的list中的下标,可以是负数,代表着“倒数第n个”。 所谓的切片,就是返回list中的一部分(子集) 切片(slice)不仅是针对list,而是对Python中所有线性数据结构都可以使用,常用的还是list中 可

    2024年02月15日
    浏览(25)
  • Python中的*(星号)和**(双星号)完全详解

    在Python中,*和**是两个重要的运算符,它们具有不同的用途。 *(星号)用于解包序列或可迭代对象,将其元素分配给函数的参数或在列表、元组等数据结构中进行拼接。 **(双星号)用于解包字典,将其键值对传递给函数的参数或在字典中进行拼接。 【示例代码】 下面是在

    2024年02月05日
    浏览(30)
  • 【PyTorch】PyTorch之Tensors索引切片篇

    介绍常用的PyTorch之Tensors索引切片等 torch.argwhere(input) → Tensor 返回一个张量,其中包含输入张量中所有非零元素的索引。结果中的每一行都包含输入中一个非零元素的索引。结果按字典序排序,最后一个索引变化最快(C风格)。 如果输入具有n维,则生成的索引张量out的大小

    2024年01月19日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包