《PyTorch深度学习实战》学习小结
创始人
2024-02-20 15:28:37
0

前言

PyTorch是Facebook发布的一款非常具有个性的深度学习框架,它和Tensorflow,Keras,Theano等其他深度学习框架都不同,它是动态计算图模式,其应用模型支持在运行过程中根据运行参数动态改变,而其他几种框架都是静态计算图模式,其模型在运行之前就已经确定。

PyTorch安装

简易安装

pip install numpy
pip install scipy
pip install  http://download.pytorch.org/whl/cu75/torch-0.1.12.post2-cp27-none-linux_x86_64.whl

指定版本安装

基础变量

Tensor 基本的数据结构

  • pytorch 中的数据都是封装成 Tensor 来引用的,
  • Tensor 实际上就类似于 numpy 中的数组,两者可以自由转换。
import torch
x = torch.Tensor(3,4)
print("x Tensor: ",x)

Variable 基本的变量结构

  • Variable变量包含了数据和数据的导数两个部分
  • x.data 是数据,这里 x.data 就是 Tensor。x.grad 是计算过程中动态变化的导数。
import torch
from torch.autograd import Variable
x=Variable(torch.Tensor(2,2))
print("x variable: ",x)

求导

  • 数学上求导简单来说就是求取方程式相对于输入参数的变化率
  • 求导的作用是用导数对神经网络的权重参数进行调整
  • Pytorch 中为求导提供了专门的包,包名叫 autograd。如果用 autograd.Variable 来定义参数,则 Variable 自动定义了两个变量,data 代表原始权重数据;而 grad 代表求导后的数据,也就是梯度。每次迭代过程就用这个 grad 对权重数据进行修正。
import torch
from torch.autograd import Variable
x = Variable(torch.ones(2, 2), requires_grad=True)
print(x)
y=x+2
print(y)
z = y * y * 3
out = z.mean()
print(z, out)
out.backward()  # backward 就是求导的意思
print(x.grad)z=(x+2)*(x+2)*3,它的导数是 3*(x+2)/2,当 x=1 时导数的值就是 3*(1+2)/2=4.5

如何用导数来修正梯度

权值更新方法:learning_rate 是学习速率,多数时候就叫做 lr,是学习步长,用步长 * 导数就是每次权重修正的 delta 值,lr 越大表示学习的速度越快,相应的精度就会降低。

weight = weight + learning_rate * gradient

learning_rate = 0.01
for f in model.parameters():f.data.sub_(f.grad.data * learning_rate)

损失函数

  • 损失函数是指用于计算标签值和预测值之间差异的函数,在机器学习过程中,有多种损失函数可供选择,典型的有距离向量,绝对值向量等。
  • pytorch 中定义了很多类型的预定义损失函数,
  • 也支持自己自定义loss function
import torch
from torch.autograd import Variable
import torch.nn as nn
import torch.nn.functional as F
sample = Variable(torch.ones(2,2))
a=torch.Tensor(2,2)
a[0,0]=0
a[0,1]=1
a[1,0]=2
a[1,1]=3
target = Variable (a)sample 的值为:[[1,1],[1,1]]
target 的值为:[[0,1],[2,3]]

nn.L1Loss

  • L1Loss 计算方法很简单,取预测值和真实值的绝对误差的平均数即可
    在这里插入图片描述
criterion = nn.L1Loss()
loss = criterion(sample, target)
print(loss)loss = (|0-1|+|1-1|+|2-1|+|3-1|) / 4 = 1

nn.SmoothL1Loss

  • SmoothL1Loss 也叫作 Huber Loss,误差在 (-1,1) 上是平方损失,其他情况是 L1 损失。
    在这里插入图片描述
criterion = nn.SmoothL1Loss()
loss = criterion(sample, target)
print(loss)
loss = 0.625

nn.MSELoss

  • 均方误差,预测值和真实值之间的平方和的平均数
    在这里插入图片描述
criterion = nn.MSELoss()
loss = criterion(sample, target)
print(loss)
loss = 1.5

nn.BCELoss

  • 二分类用的交叉熵
    在这里插入图片描述
criterion = nn.BCELoss()
loss = criterion(sample, target)
print(loss)
loss = -13.8155

nn.CrossEntropyLoss

  • 交叉熵损失函数 注意维度
    在这里插入图片描述

优化器

TODO

  • PyTorch的动态计算图模式指的是什么,与其他框架的静态计算图模式有什么差异?

相关内容

热门资讯

多城密集出台购房补贴政策   临近年末,房地产市场再迎来一波购房补贴热潮。   12月8日,上海市杨浦区发布打造互联网优质内容...
新华社快讯:韩国特检组发布最终... 新华社快讯:韩国负责调查紧急戒严事件的特检组15日发布最终调查结果,对包括前总统尹锡悦在内的24人提...
“一站式”调解织密基层平安网 深圳市龙华区福城街道综治中心以实体化、规范化建设为抓手,深入推进“一站式”矛盾纠纷调解体系建设,全面...
美芯片政策“摇摆”难掩对华封锁... 来源:科技日报 当地时间12月8日,美国总统特朗普宣布已批准英伟达向中国出售H200人工智能(AI)...
黑龙江“1+9”工作模式助推公... 近日,省司法厅印发《黑龙江省公共法律服务规范提升三年行动实施方案(2025-2027年)》,着力构建...
哈塞特回应“特式干预”:美联储... 智通财经获悉,白宫国家经济委员会主席凯文·哈塞特表示,如果被选中领导美联储,他会考虑美国总统特朗普的...
坚持政策支持与改革创新并举 中央经济工作会议在分析“今年怎么看”和部署“明年怎么办”中,概括提炼出“五个必须”的新的认识和体会。...
2026年国补释放新信号,政策... 12月10日至11日,中央经济工作会议在北京召开,会议上确定明年经济工作重要任务,第一项就是“坚持内...
当调解遇上AI 阳泉“智慧调解... 山西晚报·山河+讯(记者 辛戈)在阳泉,科技力量正深度融入基层调解工作,让矛盾纠纷化解更智能、更高效...
韩国将债券市场稳定计划延长至2... 韩国金融委员会周一表示,决定将债券市场稳定计划延长至明年,理由是国内外货币政策变化以及公债发行量增加...