Pytorch数据操作之张量操作

本文详细介绍了PyTorch中的张量操作,包括算术运算如加法,索引及改变形状,深入讨论了线性代数、广播机制以及运算的内存开销。此外,还阐述了张量与Numpy数组的互转,并提醒了在转换过程中数据共享和内存管理的重要性。
摘要由CSDN通过智能技术生成

1.算术操作

1.加法

x = torch.rand(5, 3)
y = torch.rand(5, 3)
#【1】直接+
print(x + y)
#【2】add函数
print(torch.add(x, y))

result = torch.empty(5, 3)
torch.add(x, y, out=result)#指定输出
print(result)
#【3】add_覆盖函数
y.add_(x)
print(y)
#注:PyTorch操作inplace版本都有后缀_, 例如x.copy_(y), x.t_()

2.索引

索引出来的结果与原数据共享内存,也即修改一个,另一个会跟着修改。

x = torch.rand(5, 3)
y = torch.rand(5, 3)
#【1】普通索引
y = x[0, :]
y += 1
print(y)
print(x[0, :]) # 源tensor也被改了
#【2】在指定维度上选取
index_select(input, dim, index)#选取某些行、某些列
#【3】条件选取
masked_select(input, mask)#a[a>0],使用ByteTensor进行选取
#【4】非0元素的下标
nonzero(input)
#【5】根据index,在dim维度上选取数据
gather(input, dim, index)#输出的size与index一样

3.改变形状

1.用view()来改变Tensor的形状。

  • 注意view()返回的新Tensor与源Tensor虽然可能有不同的size,但是是共享data的,也即更改其中的一个,另外一个也会跟着改变。(顾名思义,view仅仅是改变了对这个张量的观察角度,内部数据并未改变)

  • 虽然view返回的Tensor与源Tensor是共享data的,但是依然是一个新的Tensor(因为Tensor除了包含data外还有一些其他属性),二者id(内

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值