05 | Tensor变形记:快速掌握Tensor切分、变形等方法
Tensor 的连接操作
cat
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了PyTorch中Tensor的连接、切分和索引操作,以及高级操作中的masked_select函数。通过示例演示了如何使用torch.cat和torch.stack函数进行连接操作,以及chunk、split和unbind方法进行切分操作。此外,还介绍了index_select函数和masked_select函数的使用方法,并通过示例展示了如何根据特定条件选择数据。文章通过清晰的示例和详细的解释,帮助读者快速了解了Tensor的高级操作,为读者在实际应用中更灵活地使用Tensor提供了指导。整篇文章内容涵盖了Tensor操作的基本知识和实际应用,适合对PyTorch中Tensor操作感兴趣的读者阅读学习。
《PyTorch 深度学习实战》,新⼈⾸单¥59
全部留言(20)
- 最新
- 精选
- lwg0452更正😀 mask = torch.tensor([[1, 0, 0], [1, 1, 0], [0, 0, 1]]) B = torch.masked_select(A, mask>0)
作者回复: 你好,lwg0452。👍👍👍👍👍👍回答正确^^。
2021-10-20227 - optimuseye = torch.eye(3) torch.masked_select(A,eye>0)
作者回复: 👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻
2022-03-2423 - ifelse学习打卡
编辑回复: 加油
2023-11-23归属地:浙江1 - Geek_fc975d抄作业 # 手动构建了一个True/False A = torch.tensor([[4,5,7],[4,9,8],[2,3,4]]) masked_index = torch.tensor( [[True,False,False], [True,True,False], [False,False,True] ]) torch.masked_select(A, masked_index) # 这篇课程,个人觉得重要的几个知识点 1. index_select返回的结果和输入是一个维度,而masked_select返回一维输出 2. split获取的是原输入的视图,也就是对split的结果的操作会影响原来的数据 3. stack和cat的一个不同点在于,stack会升维,而cat不会。
作者回复: ^^ 👍🏻👍🏻👍🏻👍🏻
2022-04-071 - A🐴@伯乐import torch A=torch.tensor([[4,5,7], [3,9,8],[2,3,4]]) B=torch.tensor([[1,0,0],[1,1,0],[1,0,0]]) C=torch.masked_select(A, A*B!=0) print(C)
作者回复: 👍🏻👍🏻👍🏻
2022-09-07归属地:北京 - 亚林这是个mask是不是就是传说中的数据打标
作者回复: 你好,亚林,感谢留言。 差不多这个意思吧。和后面的图像分割中的mask类似。
2022-05-09 - Geek_a95f0ea=tc.tensor([[4,5,7],[3,9,8],[2,3,4]]) b=tc.tensor([1,0,0,1,1,0,0,0,1],dtype=tc.bool).reshape(3,3) c=tc.masked_select(a,b)
作者回复: 你好,谢谢你的留言。👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻完全正确^^.
2021-10-29 - 王骥input 表示待处理的 Tensor。mask 代表掩码张量,也就是满足条件的特征掩码。这里你需要注意的是,mask 须跟 input 张量有相同数量的元素数目,但形状或维度不需要相同。 老师,mask 须跟 input 张量有相同数量的元素数目,但形状或维度不需要相同 这句话该怎么理解? A = torch.tensor([[4, 5, 7], [3, 9, 8], [2, 3, 4]]) B = torch.masked_select(A, torch.tensor([[1, 0, 0], [1, 1, 0], [0, 0, 1]]) > 0) # B = torch.masked_select(A, torch.tensor([1, 0, 0, 1, 1, 0, 0, 0, 1]) > 0) 我尝试下面一种就会报错。
作者回复: 你好,王骥。感谢你的留言。很赞的问题,这里“形状或维度不需要相同”,我们举个二维矩阵的例子,你可以只写“一行”,或者所有“行”,但是“列”的数量必须跟原来的数量一致。如下代码: a=torch.randn(3,5) #不会报错 mask=torch.tensor([True, False,False,True,True]) torch.masked_select(a,mask) #会报错 mask=torch.tensor([True, False,False,True]) torch.masked_select(a,mask) 此外,需要注意的是,官网强调:The shapes of the mask tensor and the input tensor don’t need to match, but they must be broadcastable。不过一般而言咱们用的变量基本多为broadcastable的。
2021-10-242 - 李雄喜欢这节的内容。
作者回复: 你好,李雄。感谢你的留言,也谢谢你的认可。希望能与你一起学习进步^^
2021-10-232 - vcjmhgA = torch.tensor([[4, 5, 7], [3, 9, 8], [2, 3, 4]]) mask_matrix = torch.tensor([[1, 0, 0], [1, 1, 0], [0, 0, 1]]) B = torch.masked_select(A, mask == 1)
作者回复: 你好,vcjmhg。👍🏻👍🏻👍🏻,每次的回答都很赞^^,加油~ 不过masked_select中的参数是mask_matrix不是mask。:)
2021-10-21