torch byte筛选疑问

博客探讨了在PyTorch中使用ByteTensor进行按位操作时遇到的疑惑,尤其是当与其他数据类型结合时行为的改变。作者通过示例展示了不同情况下的结果,指出可能会得到意想不到的输出,特别是当index0值为1或0时。讨论了在处理这些数据时可能遇到的奇怪现象,并提出理解这种行为的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

import torch
m=torch.Tensor([[0.1,0.2,0.3],[0.5,0.6,0.4]])

iou=torch.Tensor([0.5,0.6,0.7])
a=iou > 0.5
print(a)
index=torch.Tensor([1,0,1]).type(torch.ByteTensor)

index0=torch.Tensor([1,1]).type(torch.ByteTensor)
print(index)

x=m[index0,index]
print(x)
m[index0,index]=2
print(m)

结果是:有疑问,index0的值是1或者0,出来的结果都挺奇怪:

tensor([0.1000, 0.4000])
tensor([[2.0000, 0.2000, 0.3000],
        [0.5000, 0.6000, 2.0000]])

解释:

byteTensor按位取数据,index0是1,1,则取两组数据

index中,至少有一个1,如果有一个1,两组第二维相同,,如果有两个1,从左到右依次各取一个。

这个会有几个数:


                
### PyTorch 数据索引与筛选方法 #### 1. 基本概念 在 PyTorch 中,数据索引指的是对张量(Tensor)进行操作以访问或修改其内部元素的过程。这种操作对于深度学习模型的数据预处理至关重要[^1]。 #### 2. 简单行、列索引 可以通过整数来访问张量中的某个具体位置的值。例如,在一维张量中,`x[0]` 表示获取第一个元素[^3]。 ```python import torch x = torch.tensor([1, 2, 3]) print(x[0]) # 输出: tensor(1) ``` #### 3. 列表索引 如果需要一次性选取多个不连续的位置,可以传递一个由这些位置组成的列表作为索引参数[^2]。 ```python indices = [0, 2] y = x[indices] print(y) # 输出: tensor([1, 3]) ``` #### 4. 范围索引 (切片) 利用 Python 的切片语法可以从张量中截取出一段子序列。注意,默认情况下返回的是降维后的结果;若想保留原始形状,则需额外指定步长或其他选项。 ```python z = x[0:2] print(z) # 输出: tensor([1, 2]) w = x[:1] # 使用前闭后开原则保持维度一致性 print(w.shape) # 输出: torch.Size([1]) ``` #### 5. 布尔索引 布尔索引是一种强大的工具,允许基于某些逻辑条件挑选符合条件的部分数据项。 ```python condition = torch.tensor([True, False, True]) filtered_x = x[condition] print(filtered_x) # 输出: tensor([1, 3]) ``` #### 6. 多维索引 当面对更高维度的张量时,上述规则同样适用,只需按照各轴方向依次提供相应的索引即可。 ```python multi_dim_tensor = torch.arange(9).reshape((3, 3)) row_index = 1 col_index = slice(None) selected_row = multi_dim_tensor[row_index, col_index] print(selected_row) # 输出: tensor([3, 4, 5]) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值