6.【动手学深度学习v2】 矩阵计算

news/2024/11/29 7:54:42/

6. 矩阵计算【动手学深度学习v2】

李沐

B站:https://space.bilibili.com/1567748478/channel/seriesdetail?sid=358497

课程主页:https://courses.d2l.ai/zh-v2/

教材:https://zh-v2.d2l.ai/

课件:https://courses.d2l.ai/zh-v2/assets/pdfs/part-0_6.pdf

参考:https://zh-v2.d2l.ai/chapter_preliminaries/calculus.html#subsec-calculus-grad

1. 标量

在这里插入图片描述
在这里插入图片描述

2.标量对向量求导

XXX是一个列向量,偏导数之后得到行向量

标量/向量,要从列向量变为行向量 。(torch中更没有行列向量区别)

在这里插入图片描述

在这里插入图片描述

3. 向量对标量求导

列向量还是行向量——>不变

在这里插入图片描述

4. 向量对向量求导

综合2、3步骤;

在这里插入图片描述
在这里插入图片描述

5. 梯度和导数

6. 正向和反向计算

计算中忽略了参数bbb

x2=w1∗x1+by=w2∗x2+bL=Y−yx_2 = w_1*x_1+b \\ y = w_2*x_2+b \\ L = Y-y x2=w1x1+by=w2x2+bL=Yy

∂L∂x1=∂L∂y∂y∂x2∂x2∂x1∂L∂w1=∂L∂y∂y∂x2∂x2∂w1∂L∂w2=∂L∂y∂y∂w2\frac{\partial L}{\partial x_1} = \frac{\partial L}{\partial y} \frac{\partial y}{\partial x_2} \frac{\partial x_2}{\partial x_1} \\ \frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial y} \frac{\partial y}{\partial x_2} \frac{\partial x_2}{\partial w_1} \\ \frac{\partial L}{\partial w_2} = \frac{\partial L}{\partial y} \frac{\partial y}{\partial w_2} x1L=yLx2yx1x2w1L=yLx2yw1x2w2L=yLw2y

在这里插入图片描述

# 实例2 
# 正向计算
x1 = torch.from_numpy( 2*np.ones((2, 2), dtype=np.float32) )
x1.requires_grad_(True)   #设置该tensor可被记录操作用于梯度计算
w1 = torch.from_numpy( 5*np.ones((2, 2), dtype=np.float32) )
w1.requires_grad_(True)
print("x1 =", x1,",x1 shape:",x1.shape)
print("w1 =", w1)x2 = x1 * w1
w2 = torch.from_numpy( 6*np.ones((2,2), dtype=np.float32) )
w2.requires_grad_(True)
print("x2 =", x2)
print("w2 =", w2)y = x2 * w2
Y = torch.from_numpy( 10*np.ones((2,2), dtype=np.float32) )
print("y =", y)
print("Y =", Y)L = Y - y# 反向计算
L.backward(torch.ones(2,2,dtype=torch.float32))
print("x1 grad:",x1.grad)
print("w1 grad:",w1.grad)
print("w2 grad:",w2.grad)# x1 = tensor([[2., 2.],
#         [2., 2.]], requires_grad=True) ,x1 shape: torch.Size([2, 2])
# w1 = tensor([[5., 5.],
#         [5., 5.]], requires_grad=True)
# x2 = tensor([[10., 10.],
#         [10., 10.]], grad_fn=<MulBackward0>)
# w2 = tensor([[6., 6.],
#         [6., 6.]], requires_grad=True)
# y = tensor([[60., 60.],
#         [60., 60.]], grad_fn=<MulBackward0>)
# Y = tensor([[10., 10.],
#         [10., 10.]])
# x1 grad: tensor([[-30., -30.],
#         [-30., -30.]])
# w1 grad: tensor([[-12., -12.],
#         [-12., -12.]])
# w2 grad: tensor([[-10., -10.],
#         [-10., -10.]])

http://www.ppmy.cn/news/41713.html

相关文章

java StringBuffer和StringBuilder

目录一、概述二、StringBuffer和StringBuilder区别三、StringBuffer使用一、概述 String类是字符串常量&#xff0c;是不可更改的常量。而StringBuffer是字符串变量&#xff0c;它的对象是可以扩充和修改的。 StringBuffer是使用缓冲区的&#xff0c;本身也是操作字符串的&…

【中级软件设计师】—数据库系统考点总结篇(三)

【中级软件设计师】—数据库系统考点总结篇&#xff08;三&#xff09; 课程大纲与考点分布 1 数据库系统的体系结构 分布式数据库的透明性 1.1 三级模式—两级映射 1.2 数据库的设计过程 1.3 E-R模型 首先每个实体要单独转成一个关系模式&#xff0c;总共三个实体三个关系模式…

在外web浏览器远程访问jupyter notebook服务器【内网穿透】

文章目录前言视频教程1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口5. 固定公网地址转载自远控源码文章&#xff1a;公网远程访问jupyter notebook【cpolar内网穿透】 前言 Jupyter Notebook&#…

CesiumForUnreal实现鹰眼地图(MiniMap)效果

文章目录 1.实现目标2.实现过程3.参考资料1.实现目标 基于CesiumForUnreal插件加载的在线地形和影像数据,使用Widget实现鹰眼小地图的效果,GIF动图如下: 2.实现过程 在UE开发中,常用的以Widget方法实现小地图的形式有两种。一种是动态的小地图,即地图的纹理图片会发生变化…

Chat GPT太强,多种玩法曝光

1、模拟面试、考试&#xff0c;备考等&#xff0c;以面试为例&#xff0c;让它扮演一个角色 先让它扮演互联网行业的商业分析师 2、写各种发言稿、文章、报告&#xff0c;给它你的明确要求和目标&#xff0c;以发言稿为例&#xff0c;输入继续&#xff0c;可以持续优化 3、…

测试:腾讯云轻量4核8G12M服务器CPU流量带宽系统盘

腾讯云轻量4核8G12M应用服务器带宽&#xff0c;12M公网带宽下载速度峰值可达1536KB/秒&#xff0c;折合1.5M/s&#xff0c;每月2000GB月流量&#xff0c;折合每天66GB&#xff0c;系统盘为180GB SSD盘&#xff0c;地域节点可选上海、广州或北京&#xff0c;4核8G服务器网来详细…

Golang每日一练(leetDay0031)

目录 91. 解码方法 Decode Ways &#x1f31f;&#x1f31f; 92. 反转链表 II Reverse Linked List II &#x1f31f;&#x1f31f; 93. 复原 IP 地址 Restore IP Addresses &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练…

AIGC爆火的背后需要掌握的基础原理

‍‍最近AIGC和大模型的大火让视频行业的老板们异常兴奋&#xff0c;以前制作一个视频需要经历文案、配音、画面、出镜等复杂流程&#xff0c;现在应用生成式AI产品自动生成文案脚本&#xff0c;再使用一键生成视频&#xff08;TTV技术&#xff09;功能&#xff0c;一天可以完成…