当前位置:   article > 正文

Pytorch 入门与实践_《深度学习入门之pytorch》电子版

《深度学习入门之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,从而享受加速运算
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

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
  • 1
  • 2

未完待续

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/356481
推荐阅读
相关标签
  

闽ICP备14008679号