《智能计算系统》第五章 编程框架原理(上)课程视频链接:https://www.bilibili.com/video/BV1Ei421i7Rg智能计算系统 第五章 编程框架原理(上)
本文源自于B站国科大计算所 智能计算系统课程官方账号 所公开上传的视频,在原有视频之上,提取了关键帧、将音频转成了笔墨并进行了校正,以便学习利用。在此,也感谢国科大计算所 智能计算系统课程官方能够将该课程公开!
若侵权,请联系删除。
备注:反向传播的图是怎么来的呢?在下面会有PyTorch的代码,个人理解是:对于正向传播中的每一条边,都会有相应的反向传播的节点;而不是正向传播中的每一个节点对应反向传播的节点,这个图虽然画的很清楚,但是感觉还是会产生一定误导的=_=右边这张图我们从下往上看,首先计算第一个节点,也就是 \(y\)相对于\(x_6\) 这个节点的导数,由于 \(y\) 它等于\(x_6\),以是这个 \(y\) 相对\(x_6\)这个节点的导数就为1
下图中parse_type的实现在:pytorch/c10/core/Device.cpp at v2.4.0-rc7 · pytorch/pytorch (github.com)
https://github.com/pytorch/pytorch/blob/v2.4.0-rc7/c10/core/impl/DeviceGuardImplInterface.h#L57
备注:上面的这个形状是我拿PyTorch试出来的,下面的行切片也是,和课程中老师说的不太一样。但神奇的是,如果在选切片时,利用的是A[: , 0:1],出来的形状就是[2,1]了...那这样的一个切片操作,它实在并没有隐式的去创建一个新的张量并且拷贝,而只是提供了本来物理视图下的一个新的逻辑视图;那它的物理视图仍旧是这个物理地点空间从0x10这个位置开始连续存储的一块数据,但是由于它的步长等于2,以是在进行物理地点空间寻址的时候,每访问一个元素,我都要跳跃两个元素,从而对应了是0x10和0x18两个位置的数据复制代码
- >>> a = torch.randn(2,2)
- >>> a[:, 0].shape, a[1, :].shape
- (torch.Size([2]), torch.Size([2]))
- >>> a[:, 0:1].shape, a[1:2, :].shape
- (torch.Size([2, 1]), torch.Size([1, 2]))
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |