PyTorch笔记5----------Autograd、nn库

1.Autograd

  • grad和grad_fn
    • grad:该tensor的梯度值,每次在计算backward时都需要将前一时刻的梯度归零,否则梯度值会一直累加
    • grad_fn:叶子结点通常为None,只有结果节点的grad_fn才有效,用于只是梯度函数时哪种类型
  • torch.autograd.backward(tensors,grad_tensors,retain_graph,create_graph)
    • 参数tensors:用于计算梯度的tensor
    • 参数grad_tensors:在计算矩阵的梯度时会用到
    • 参数retain_graph:通常在调用一次backward后,pytorch会自动把计算图销毁,所以想要对某个变量重复调用backward,则需要将该参数值设为True,默认值为False
    • 参数create_graph:如果为True,则会创建一个专门计算微分的图
  • torch.autograd.grad(output,input,grad_output,retain_graph,create_graph,only_input,allow_unused)
    • 计算和返回output关于input的梯度的和
    • 参数output:函数的因变量,即需要求导的函数
    • 参数input:函数的自变量
    • 参数grad_output、retain_graph、create_graph:同backward
    • 参数only_input:值为True时只计算input的梯度
    • 参数allow_unused:值为False时,当计算输出出错时,指明不使用inpiu
  • torch.autograd.Function
    • 每一个原始的自动求导运算实际上是两个在tensor上运行的函数
      • forward函数:计算从输入tensor获得的输出tensor
      • backward函数:接收输出tensor对于某个标量值的梯度,并且计算输入tensor相对于该相同标量值的梯度
      • 利用apply方法执行相应的运算
import torch
class line(torch.autograd.Function):@staticmethoddef forward(ctx, w, x, b):ctx.save_for_backward(w,x,b)return w * x + b@staticmethoddef backward(ctx,grad_out):w,x,b = ctx.saved_tensorsgrad_w = grad_out * xgrad_x = grad_out * wgrad_b = grad_outreturn grad_w, grad_x, grad_b
w = torch.rand(2,2,requires_grad=True)
x = torch.rand(2,2,requires_grad=True)
b = torch.rand(2,2,requires_grad=True)
out = line.apply(w,x,b)
out.backward(torch.ones(2,2))
print(w,x,b)
print(w.grad)
print(x.grad)
print(b.grad)
  • 其他torch.autograd包中的函数
    • torch.autograd.enable_grad:启动梯度计算的上下文管理器
    • torch.autograd.no_grad:禁止梯度计算的上下文管理器
    • torch.autograd.set_grad_enabled(mode):设置是否进行梯度计算的上下文管理器

2.nn库

torch.nn库是专门为神经网络设计的模块化接口,自动计算前向传播和反向传播,可以用来定义和运行神经网络。

  • nn.Parameter & nn.ParameterList & nn.ParameterDict
    • 定义可训练参数
  • nn.Linear & nn.conv2d & nn.ReLU & nn.MaxPool2d & nn.MSELoss
    • 各种神经网络层的定义,继承于nn.Module的子类
  • nn.functional
    • 包含了torch.nn库中所有的函数,包含大量loss和activation function
    • nn.functional.xxx是函数接口
    • nn.functional.xxx无法与nn.Sequential结合使用
  • nn.Sequential
    • 通过一个序列的方法完成对一个网络的定义
  • nn.ModuleList
    • 用于搭建一个网络模型
  • nn.MouduleDict
    • 通过字典的方式搭建一个网络模型

具体案例使用,后期在神经网络的学习中

 知识点为听课总结笔记,课程为B站“2025最新整合!公认B站讲解最强【PyTorch】入门到进阶教程,从环境配置到算法原理再到代码实战逐一解读,比自学效果强得多!”:2025最新整合!公认B站讲解最强【PyTorch】入门到进阶教程,从环境配置到算法原理再到代码实战逐一解读,比自学效果强得多!_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89142.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Perl 格式化输出

Perl 格式化输出 引言 Perl 是一种通用、解释型、动态编程语言,广泛应用于文本处理、系统管理、网络编程等领域。在Perl编程中,格式化输出是一种常见的需求,它可以帮助开发者更好地展示和打印信息。本文将详细讲解Perl中格式化输出的方法&…

Python爬虫实战:研究markdown2库相关技术

一、引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上的信息量呈指数级增长。如何高效地获取和整理这些信息成为了一个重要的研究课题。网络爬虫作为一种自动获取网页内容的技术,能够按照一定的规则,自动地抓取万维网信息,为信息的收集提供了有力手段。 Markdown …

【Linux】基本指令详解(二) 输入\输出重定向、一切皆文件、认识管道、man、cp、mv、echo、cat

文章目录一、man指令二、输入/输出重定向(echo、一切皆文件)三、cp指令四、mv指令五、cat指令六、more/less指令七、head/tail指令八、管道初见一、man指令 Linux的指令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助。 man 指令…

MVC HTML 帮助器

MVC HTML 帮助器 引言 MVC(模型-视图-控制器)是一种流行的软件架构模式,它将应用程序的逻辑分解为三个主要组件:模型(Model)、视图(View)和控制器(Controller&#xff09…

linux下手工安装ollama0.9.6

1、去下载ollama的linux版的压缩包: 地址:https://github.com/ollama/ollama/releases2、上传到linux中。3、解压: tar zxvf ollama-linux-amd64-0.9.6.tgz -C /usr/local/4、如果仅仅是要手工执行,已经可以了: ollama…

kotlin布局交互

将 wrapContentSize() 方法链接到 Modifier 对象,然后传递 Alignment.Center 作为实参以将组件居中。Alignment.Center 会指定组件同时在水平和垂直方向上居中。 DiceWithButtonAndImage(modifier Modifier.fillMaxSize().wrapContentSize(Alignment.Center) )创建…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ToastNotification(推送通知)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— ToastNotification组件 仓库地址&#xff1a;https://github.com/SunACong/50-vue-projects 项目预览地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 Composition API&#xff08;<script s…

学习笔记(34):matplotlib绘制图表-房价数据分析与可视化

学习笔记(34):matplotlib绘制图表-房价数据分析与可视化分析房价分布情况&#xff0c;通过直方图、核密度估计和正态分布拟合来直观展示房价的分布特征&#xff0c;并进行统计检验。一、房价数据分析与可视化&#xff0c;代码分析1.1、导入必要的库import pandas as pd import …

前端三剑客之CSS

1. CSS 简介1) CSS 简述CSS&#xff0c;即层叠样式表&#xff08;英文全称&#xff1a;Cascading Style Sheets&#xff09;&#xff0c;是一种专门用于修饰 HTML 文档呈现样式的计算机语言。它的功能不仅限于静态美化网页&#xff0c;还能与各类脚本语言配合&#xff0c;实现对…

力扣25.7.11每日一题——无需开会的工作日

Description 这题类似合并区间&#xff0c;题意你们都能看懂吧…… Solution 这道题就需要用到合并区间的方法。 答案等于 daysdaysdays 减「有会议安排的天数」。 对左端点进行排序&#xff0c;计算有会议安排的天数&#xff0c;累加每个区间的长度&#xff0c;即为有会议…

每日一SQL 【销售分析 III】

文章目录问题案例执行顺序使用分组解决问题 案例 执行顺序 SQL 语句的执行顺序&#xff08;核心步骤&#xff09; 同一层级的select查询内部, 别名在整个 SELECT 计算完成前不生效 使用分组解决 select distinct s.product_id, Product.product_name from Sales sleft join …

轻轻松松带你进行-负载均衡LVS实战

8. LVS部署命令介绍 8.1 LVS软件相关信息 1.程序包&#xff1a;ipvsadm 2.Unit File: ipvsadm.service 3.主程序&#xff1a;/usr/sbin/ipvsadm 4.规则保存工具&#xff1a;/usr/sbin/ipvsadm-save 5.规则重载工具&#xff1a;/usr/sbin/ipvsadm-restore 6.配置文件&#xff1a…

C#.NET 集合框架详解

简介 C# 集合框架是处理数据集合的核心组件&#xff0c;位于 System.Collections 和 System.Collections.Generic 命名空间。它提供了多种数据结构来高效存储和操作数据。 集合框架概览 System.Collections (非泛型老版) └─ System.Collections.Generic (泛…

网络劫持对用户隐私安全的影响:一场无形的数据窃取危机

在互联网时代&#xff0c;网络劫持如同一把“隐形镰刀”&#xff0c;悄然威胁着用户的隐私安全。当我们在浏览网页、使用社交媒体或进行在线交易时&#xff0c;看似正常的网络连接背后&#xff0c;可能正暗藏着数据被窃取的风险。网络劫持通过多种技术手段干预用户与服务器的正…

使用 Helm 下载 Milvus 安装包(Chart)指南

目录 &#x1f4e6; 使用 Helm 下载 Milvus 安装包&#xff08;Chart&#xff09;指南 &#x1f6e0; 环境准备 &#x1f680; 第一步&#xff1a;添加 Milvus Helm 仓库 &#x1f50d; 第二步&#xff1a;查看可用版本 &#x1f4e5; 第三步&#xff1a;下载指定版本的 C…

EXTI 外部中断

目录 STM32中断 NVIC 中断控制器 NVIC优先级分组 EXTI 外部中断 AFIO 复用IO口 外部中断/事件控制器&#xff08;EXTI&#xff09;框图 STM32中断 在STM32微控制器中&#xff0c;共有68个可屏蔽中断通道&#xff0c;涵盖了多个外设&#xff0c;如外部中断&#xff08;EXT…

WebApplicationType.REACTIVE 的webSocket

通用请求体类 Data ApiModel("websocket请求消息") public class WebSocketRequest<T> implements Serializable {private static final long serialVersionUID 1L;/*** 参考&#xff1a;com.mcmcnet.gacne.basic.service.common.pojo.enumeration.screen.AiB…

降本增效!自动化UI测试平台TestComplete并行测试亮点

在跨平台自动化测试中&#xff0c;企业常面临设备投入高、串行测试耗时长、测试覆盖率难以兼顾的困境。自动化UI测试平台TestComplete的并行测试引擎提供了有效的解决方案&#xff1a;通过云端海量设备池与CI/CD深度集成&#xff0c;实现多平台、多浏览器并行测试&#xff0c;显…

云、实时、时序数据库混合应用:医疗数据管理的革新与展望(上)

云、实时、时序数据库混合应用:医疗数据管理的革新与展望 1、引言 1.1 研究背景与意义 在信息技术飞速发展的当下,医疗行业正经历着深刻的数字化转型。这一转型不仅是技术层面的革新,更是关乎医疗体系未来发展方向的深刻变革。从医疗服务的提供方式,到医疗管理的模式,再…

代码随想录算法训练营十六天|二叉树part06

LeetCode 530 二叉搜索树的最小绝对差 题目链接&#xff1a;530. 二叉搜索树的最小绝对差 - 力扣&#xff08;LeetCode&#xff09; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差…