Pytorch 入门与实践

参考:
《深度学习框架Pytorch:入门与实践》(陈云)
《深度学习入门之PyTorch》(廖星宇)
《深度学习之PyTorch实战计算机视觉 (2)》
PyTorch官方教程

import torch as t

Tensor

  • Tensor是PyTorch 中里要的数据结构,可认为是一个高维数组。
  • 它可以是一个数(标量)、一维数组(向量)、 二维数组(矩阵)或更离维的数组。
  • Tenso 和 numpy的 ndarrays类似,但Tensor可以使用GPU加速。
  • Tensor的使用和 numpy及MATLAB的接口十分相似。
  • Tensor和numpy对象共享内存,转换很快几乎不需要消耗资源,其中一个变了,另外一个也随之改变
  • torch.Size是tuple对象的子类,因 此它支持tuple的所有操作
  • 函数名后面带下画线的函数会修改Tensor本身
 x=t.Tensor(m,n)        #创建一个m×n的矩阵,分配空间,未初始化
 x=t.rand(m,n)          #使用[0,1]随机初始化二维数组
 print(x.size())        #查看x的形状
 
 x.size()[1]       
 x.size(1) #同上
x[:,1]   #取一列

#-----------------------------加法--------------------------------
x+y
t.add(x,y)

result=t.Tensor(n,m)    #预先分配
t.add(x,y,out=result)

y.add(x)          #y没有改变
y.add_(x)         #inplace加法,y变了

#-----------------------------转换------------------------------
a=t.ones(n)       #新建了一列n行全是1的Tensor
b=a.numpy()    #Tensor->Numpy
a=np.ones(5)
b=t.from_numpy(a) #Numpy->Tensor
if t.cuda.is_available():
       x=x.cuda()     #Tensor可通过.cuda方法转化为GPU的Tensor,从而享受加速运算

Autograd

深度学习算法本质上是通过反向传播求导数。
Autograd可以为Tensor上的操作自动微分,核心类是autograd.Variable,简单封装了Tensor, 并支持几乎所有Tensor的操作。
Tensor在被封装为Variable之后,可以调用它的 . backward实现反向传播,自动计算所有梯度。
Variable主要包含三个属性:

  1. data:保存Variable所包含的Tensor
  2. grad:保存data对应的梯度, grad也是个Variable, 而不是Tensor, 它和data的形状—样。
  3. grad_fn : 指向一个Functio n对象,这个Function用来反向传播计算输入的梯度
 x=Variable(t.ones(2,2), requires_grad=True)
 y=x.sum()   #4

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值