动手学pytorch笔记整理01

数据操作

在深度学习中,我们通常会频繁地对数据进行操作。在PyTorch中,torch.Tensor是存储和变换数据的主要工具。Tensor和NumPy的多维数组非常类似。然而,Tensor提供GPU计算和自动求梯度等更多功能,这些使Tensor更加适合深度学习。

"tensor"这个单词一般可译作“张量”,张量可以看作是一个多维数组。标量可以看作是0维张量,向量可以看作1维张量,矩阵可以看作是二维张量。

//创建一个5x3的未初始化的`Tensor`:
x = torch.empty(5, 3)

//创建一个5x3的随机初始化的`Tensor`:
x = torch.rand(5, 3)

//创建一个5x3的long型全0的`Tensor`:
x = torch.zeros(5, 3, dtype=torch.long)

//可以通过shape或者size()来获取Tensor的形状:
print(x.size())
print(x.shape)
函数功能
Tensor(*sizes)基础构造函数
tensor(data,)类似np.array的构造函数
ones(*sizes)全1Tensor
zeros(*sizes)全0Tensor
eye(*sizes)对角线为1,其他为0
arange(s,e,step)从s到e,步长为step
linspace(s,e,steps)从s到e,均匀切分成steps份
rand/randn(*sizes)均匀/标准分布
normal(mean,std)/uniform(from,to)正态分布/均匀分布
randperm(m)随机排列

这些创建方法都可以在创建的时候指定数据类型dtype和存放device(cpu/gpu)。

tensor各种操作

加法操作

 y = torch.rand(5, 3)
    print(x + y)
    
    //加法形式2
	print(torch.add(x, y))
	
	//还可指定输出:
    result= torch.empty(5, 3)
    torch.add(x, y, out=result)
    print(result)
    

//加法形式3__inplace
    y.add_(x)
    print(y)

索引

//索引
y = x[0, :]
y += 1
print(y)
print(x[0, :]) // 源tensor也被改了
高级函数实现功能
index_select(input,dim, index)在指定维度dim上选取,比如选取某些行、某些列
masked_select(input,mask)例子如上,a[a>0],使用ByteTensor进行选取
nonzero(input)非0元素的下标
gather(input,dim, index)根据index,在dim维度上选取数据,输出的size与index一样
y = x.view(15)
z = x.view(-1, 5)  
print(x.size(), y.size(), z.size())
输出:torch.Size([5, 3]) torch.Size([15]) torch.Size([3, 5])

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

Tensor on GPU

if torch.cuda.is_available():
    device = torch.device("cuda")          # GPU
    y = torch.ones_like(x, device=device)  # 直接创建一个在GPU上的Tensor
    x = x.to(device)                       # 等价于 .to("cuda")
    z = x + y
    print(z)
    print(z.to("cpu", torch.double))       # to()还可以同时更改数据类型
    ```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值