深度学习框架Pytorch入门与实践

Tensor:
import torch as t

生成一个5*3矩阵,只是分配了空间,未初始化

x = t.Tensor(5,3)

使用[ 0 , 1]均匀分布随机初始化二维数组

x = t.rand(5,3)

查看x的形状

print(x.size())
x.size()[1] x.size(1) # 查看列的个数

加法

y = t.rand(5,3)
x+y
t.add( x , y )
t.add( x, y, out = result )
y.add( x )
y.add_(x) # inplace加法,函数名后面带下划线的函数会修改Tensor本身

tensor和numpy之间的转换非常容易且快速,tensor不支持的操作,可以先转换成为numpy进行操作,然后再转换成为tensor

a = t.ones(5)
b = a.numpy()
import numpy as np
a = np.ones(5)
b = t.from_numpy(a)

Tensor 与numpy对象共享内存,所以他们之间的转换很快,几乎不会消耗资源,如果其中一个改变了,则另外一个也会随之改变

Tensor可以通过.cuda 方法转为GPU的Tensor,从而享受GPU带来的加速运算

if t.cuda.is_available():
x = x.cuda()
y = y.cuda()
x+y

Autograd 自动微分

autograd.Variable 是Autograd中的核心类,简单封装了Tensor,支持几乎所有的Tensor操作,可以调用.backward实现反向传播,自动计算所有梯度
autograd.Variable对象主要包括三个属性

  • data,保存Variable所包含的tensor
  • grad:保存对应的梯度,grad也是一个Variable对象,而不是一个tensor
  • grad_fn:指向一个Function对象,这个Function用来反向传播计算输入的梯度
    grad在反向传播的过程中是累加的,这意味着每次运行反向传播,梯度都会累加之前的梯度,所以在每一次反向传播之前需要把梯度设为0
    x.grad.data.zero_()
    神经网络:
    torch.nn
    nn.Module 是nn中最重要的类,是一个网络的封装,包含网络各层定义以及forward方法
    定义网络时,需要继承nn.Module,并实现他的forward方法,把网络中具有可学习参数的层放在构造函数__init__中
    nn.Module子类的函数必须在构造函数中,执行父类的构造函数
    forward函数的输入和输出都是Variable,只有Variable对象才有自动求导功能
    torch.nn 只支持mini-batch 不支持一次只输入一个样本,如果想输入一个样本,则需自己手动设置
    损失函数,
    优化器,
    数据加载与预处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值