《动手学深度学习 Pytorch版》 4.7 前向传播、反向传播和计算图

4.7.1 前向传播

整节理论,详见书本。

4.7.2 前向传播计算图

整节理论,详见书本。

4.7.3 反向传播

整节理论,详见书本。

4.7.4 训练神经网络

整节理论,详见书本。

练习

(1)假设一些标量函数 X 的输入 Xn×m 矩阵。f 相对于 X 的梯度的维数是多少?

还是 n×m,多少个变量就是多少个导数嘛。


(2)向本节中描述的模型的隐藏层添加偏置项(不需要再正则化项中包含偏置项)。

    a.绘制出相应的计算图。

    b.推导前向传播和反向传播方程。

b. 仍假设输入样本是 xRd,则前向传播为:

(1)z=W(1)x+b(2)h=ϕ(z)(3)o=W(2)h+b(4)L=l(o,y)(5)s=λ2(||W(1)||F2+||W(2)||F2)(6)J=L+s

反向传播为:

(7)JL=1,Js=1(8)Jo=JLLo=LoRq(9)sW(1)=λW(1),sW(2)=λW(2)(10)JW(2)=JooW(2)+JssW(2)=JohT+λW(2)(11)Jh=Jooh=W(2)TJo(12)Jz=Jhhz=Jhϕ(z)(13)JW(1)=JzzW(1)+JssW(1)=JzxT+λW(1)

a. 计算图为:

image


(3)计算本节所描述的模型用于训练和预测的内存空间。

不会,略。


(4)假设想计算二阶导数。计算图会发生什么变化?预计计算需要多长时间?

二阶计算图应该是在保留一阶计算图的基础上继续拓展出来的,需要的时间大抵是二倍吧。


(5)假设计算图对于当前的GPU来说太大了。

    a. 请尝试把它划分到多个GPU上。
    b. 这与小批量训练相比,有哪些优点和缺点。

a. 应使用 torch.nn.DataParallel 进行并行运算。

b.

batch_size够大则会由于并行计算而加快速度

batch_size不够大时反而会因为多卡之间的通信以及数据拆分与合并的额外开销导致效率反而更低。

posted @   AncilunKiang  阅读(114)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示