pytorch(三)反向传播

这篇具有很好参考价值的文章主要介绍了pytorch(三)反向传播。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

反向传播

  • 前馈过程的目的是为了计算损失loss
  • 反向传播的目的是为了更新权重w,这里权重的更新是使用随机梯度下降来更新的。

前馈过程

pytorch(三)反向传播,python,pytorch,人工智能,python
反馈过程

pytorch(三)反向传播,python,pytorch,人工智能,python

import torch
x_data=[1.0,2.0,3.0]
y_data=[2.0,4.0,6.0]

w=torch.Tensor([1.0])
# 表示需要计算梯度,默认不需要计算梯度
w.requires_grad=True

def forward(x):
    return x*w # w是tensor类型,则运算会被重载成tensor之间的运算,x会被自动类型转换为tensor类型

def loss(x,y):
    y_pred=forward(x)
    return (y_pred-y)**2

print('predict before:',4,forward(4).item())

for epoch in range(100):
    for x,y in zip(x_data,y_data):
        # 前馈过程
        l=loss(x,y)
        # 反馈过程,会自动计算,存储在w中,完成存储后释放计算图
        l.backward()
        print('\tgrad:',x,y,w.grad.item())
        # 权重更新,使用data标量,grad也是tensor
        w.data=w.data=0.01*w.grad.data
        # 权重中的梯度数据清零
        w.grad.data.zero_()
        
    print('progress:',epoch,l.item())
    
print('predict after:',4,forward(4).item())

运行结果
pytorch(三)反向传播,python,pytorch,人工智能,python

在神经网路中,经常对线性的结果做一个非线性函数的变幻的展开,这就是激活函数。激活函数可以使得模型具有非线性。激活函数给神经元引入了非线性因素,神经网络就可以毕竟任意的非线性函数。如果不增加激活函数,模型展开之后还是线性模型,就还是只有一层。

tensor的广播机制

在tensor的使用过程中,我们经常需要对不同形状的tensor进行计算,这个时候就需要用到tensor的广播机制

tansor的广播机制就是在不同的rensor之间进行计算时,自动将数据进行扩展的一种方式。简单来说,就是当两个tensor的形状不同时,tensor会自动的将自己的形状扩展为另一个tensor的相同形状,然后进行计算。通常情况下,小一点的数组会被广播成大一点的数组,这样才能保持大小一致。

tensor的广播机制需要遵循以下规则:

  • 每个tensor至少有一个维度
  • 遍历tensor所有维度时,从末尾开始遍历(从右向左),两个tensor可能存在以下情况
    • tensor维度相同
    • tensor维度不同但是其中一个维度为1
    • tensor维度不等且其中一个维度不存在

满足以上规则的tensor可以进行广播,维度扩展的过程就是将数值进行复制的过程。示例如下

import torch

a=torch.Tensor([1,2,3])
b=torch.Tensor([[1],[2],[3]])
# b=torch.Tensor([2,3])
c=a+b
print('c',c)
c=b+a
print('c',c)

运行结果

c tensor([[2., 3., 4.],
        [3., 4., 5.],
        [4., 5., 6.]])
c tensor([[2., 3., 4.],
        [3., 4., 5.],
        [4., 5., 6.]])

有如下情况是不可以进行广播的:

  • 参与运算的tensor维度不等但是其中没有一个的维度为1
  • 参与运算的tensor其中一个没有任何维度,示例如下

pytorch(三)反向传播,python,pytorch,人工智能,python

pytorch(三)反向传播,python,pytorch,人工智能,python

ps:这种广播机制并不是tensor独有的,numpy数组也可以广播,详情可以查看 numpy的广播机制文章来源地址https://www.toymoban.com/news/detail-821161.html

到了这里,关于pytorch(三)反向传播的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【人工智能】— 逻辑Agent、一般逻辑、Entailment 蕴涵、命题逻辑、前向链接、反向链接、Resolution归结

    逻辑智能体:基于知识的智能体 知识和推理的重要性 部分可观察的环境 自然语言理解 基于知识的智能体的灵活性 知识库是一组用形式化语言表述的陈述句,其中包含有系统需要了解的信息。 在构建一个智能体时,通常采用“告诉”和“询问”的方式,即先将需要的知识加

    2024年02月08日
    浏览(31)
  • pytorch(三)反向传播

    前馈过程的目的是为了计算损失loss 反向传播的目的是为了更新权重w,这里权重的更新是使用随机梯度下降来更新的。 前馈过程 反馈过程 运行结果 在神经网路中,经常对线性的结果做一个非线性函数的变幻的展开,这就是激活函数。激活函数可以使得模型具有非线性。激活

    2024年01月24日
    浏览(28)
  • pytorch 前向传播与反向传播代码+ fp16

    optim.zero_grad() : 将模型的梯度参数设置为0,即清空之前计算的梯度值,在训练模型过程中,每次模型反向传播完成后,梯度都会累加到之前的梯度值上,如果不清空,这些过时的梯度将会影响下一次迭代的结果。因此,使用 optim.zero_grad() 来清空梯度避免这种情况的发生。保证

    2024年02月05日
    浏览(33)
  • PyTorch 人工智能研讨会:6~7

    原文:The Deep Learning with PyTorch Workshop 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则 2.3.c 概述 本章扩展了循环神经网络的概念。 您将

    2023年04月20日
    浏览(46)
  • [pytorch] 8.损失函数和反向传播

    torch提供了很多损失函数,可查看官方文档Loss Functions部分 作用: 计算实际输出和目标输出之间的差距 为更新输出提供一定的依据(反向传播),grad 损失函数用法差不多,这里以L1Loss和MSEloss为例 L1Loss 注意传入的数据要为float类型,不然会报错,所以inputs和outputs处要加上类

    2024年01月25日
    浏览(26)
  • Pytorch深度学习笔记(五)反向传播算法

    目录 1.为什么要使用反向传播算法 2.二层神经网络 3.反向传播算法更新权值的过程 4.张量Tensor 推荐课程:04.反向传播_哔哩哔哩_bilibili 1.为什么要使用反向传播算法 简单模型可以使用解析式更新w 复杂模型,如图,输入矩阵为5*1矩阵,等一层权重矩阵H1为6*5矩阵,则需要30个解

    2023年04月22日
    浏览(29)
  • 《人工智能专栏》必读150篇 | 专栏介绍 & 专栏目录 & Python与PyTorch | 机器与深度学习 | 目标检测 | YOLOv5及改进 | YOLOv8及改进 | 关键知识点 | 工具

    各位读者们好,本专栏最近刚推出,限于个人能力有限,不免会有诸多错误,敬请私信反馈给我,接受善意的提示,后期我会改正,谢谢,感谢。 第一步 :[ 购买点击跳转 ] 第二步 : 代码函数调用关系图(全网最详尽-重要) 因文档特殊,不能在博客正确显示,请移步以下链接

    2024年02月02日
    浏览(52)
  • 人工智能学习07--pytorch15(前接pytorch10)--目标检测:FPN结构详解

    backbone:骨干网络,例如cnn的一系列。(特征提取) (a)特征图像金字塔 检测不同尺寸目标。 首先将图片缩放到不同尺度,针对每个尺度图片都一次通过算法进行预测。 但是这样一来,生成多少个尺度就要预测多少次,训练效率很低。 (b)单一特征图 faster rcnn所采用的一种方式

    2023年04月12日
    浏览(36)
  • 人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程,本文将介绍如何使用PyTorch搭建ELMo模型,包括ELMo模型的原理、数据样例、模型训练、损失值和准确率的打印以及预测。文章将提供完整的代码实现。 ELMo模型简介 数据

    2024年02月07日
    浏览(44)
  • 人工智能:Pytorch,TensorFlow,MXNET,PaddlePaddle 啥区别?

    学习人工智能的时候碰到各种深度神经网络框架:pytorch,TensorFlow,MXNET,PaddlePaddle,他们有什么区别? PyTorch、TensorFlow、MXNet和PaddlePaddle都是深度学习领域的开源框架,它们各自具有不同的特点和优势。以下是它们之间的主要区别: PyTorch是一个开源的Python机器学习库,它基

    2024年04月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包