李沐动手学深度学习课后习题

这里是我学习李沐老师的动手学深度学习时,教材课后题的一些解答,如果有不正确的解答还请指出来。持续更新

2.预备知识

2.5自动微分

1.为什么计算二阶导数比一阶导数的开销要大?
A : 二阶导数是一阶导数的导数,从原理上看,它表示一阶导数的变化率,从图形上看,它反映的是函数图像的凹凸性,二阶导数比一阶导数开销大。

2.在运行反向传播函数之后,立即再次运行它,会发生什么?
A:在这里插入图片描述

3.在控制流的例子中,我们计算d关于a的导数,如果我们将变量a更改为随机向量或矩阵,会发生什么?
A:
把原文中的例子换成size=(3,1)在这里插入图片描述使用d.sum().backward(),运行结果正确。
在这里插入图片描述
但是我们看到a.grad == d / a,中第三个是False,可能是微小的误差引起的。

4.如下图:在这里插入图片描述
A:

%matplotlib inline
import torch
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter,MultipleLocator
import numpy as np

f,ax = plt.subplots(1)
x = np.linspace(-3*torch.pi,3*torch.pi,100)
x1 = torch.tensor(x,requires_grad=True)
y1 = torch.sin(x1)
y1.sum().backward()

ax.plot(x,np.sin(x),label = 'sin(x)')
ax.plot(x,x1.grad,label = 'gradient of sin(x)')
ax.legend(loc='upper center',shadow=True)

plt.show()

output:
在这里插入图片描述

3.线性神经网络

3.1线性回归

1.如下图:
在这里插入图片描述
A:在这里插入图片描述

3.3线性回归简洁实现

1.如果我们用nn.MSELoss(reduction=‘sum’)替换 ,nn.MSELoss()”为了使代码的行为相同,需要怎么更改学习速率?为什么?

A:应该把学习率除以batch_size,因为默认参数是mean,换成sum 需要除以批量数,一般会采用默认,因为这样学习率可以跟batch_size解耦
并且如果只采用sum没有除以样本数,损失会放大样本数的倍数(样本数是100,损失会放大100倍),这回使得参数的梯度过大,梯度经过放大后,原有的学习率显得过大,使得其出现了振荡,即步长过长导致在最优解的附近震荡而无法高效逼近最优点。

2.如何访问线性回归的梯度?
A :一般情况下,先call .backward(),再call .grad

5.深度学习计算

5.2参数管理

1.共享参数的好处是什么?
A: 共享参数通常可以节省内存,并在以下方面具有特定的好处:

  • 对于图像识别中的CNN,共享参数使网络能够在图像中的任何地方而不是仅在某个区域中查找给定的功能。
  • 对于RNN,它在序列的各个时间步之间共享参数,因此可以很好的推广到不同序列长度的示例。
  • 对于自动编码器,编码器和解码器共享参数,在具有线性激活函数的单层自动编码器中,共享权重会在权重矩阵的不同隐藏层之间强制正交。

5.3延后初始化

1.如果你指定了第一层的输入尺寸,但没有指定后续层的尺寸,会发生什么?是否立即进行初始化?
A:可以正常运行。第一层会立即初始化,但其他层同样是直到数据第一次通过模型传递才会初始化

net = nn.Sequential(
    nn.Linear(20, 256), nn.ReLU(),
    nn.LazyLinear(128), nn.ReLU(),
    nn.LazyLinear(10)
)
print(net[0].weight)
print(net[2].weight)
net(X)
print(net[2].weight)
  1. 如果指定了不匹配的维度会发生什么?
    A:会由于矩阵乘法的维度不匹配而报错

  2. 如果输入具有不同的维度,你需要做什么?提示:查看参数绑定的相关内容。
    A:如果输入维度比指定维度小,可以考虑使用padding填充;如果输入维度比指定维度大,可以考虑用pca等降维方法,将维度降至指定维度。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PyTorch深度学习简明实战电子版是一本帮助读者入门深度学习框架PyTorch的书籍。本书内容详细,分为四个部分,分别是:PyTorch初步、图像分类、目标检测以及深度强化习,能够帮助读者系统地深度学习的基础知识、理解和掌握PyTorch框架下的常用模型和算法,并能够在实践中应用这些模型和算法解决实际问题。 在PyTorch初步部分,本书介绍了PyTorch框架的基本使用方法和特点,包括如何创建和操作张量、构建计算图、定义和训练模型等方面的内容。图像分类部分介绍了卷积神经网络(CNN)的基础理论和实现方法,并使用PyTorch框架构建了一个CNN模型,用于解决图像分类问题。目标检测部分介绍了目标检测的基础知识和Mask R-CNN算法,并使用PyTorch实现了Mask R-CNN模型,应用于目标检测问题。深度强化习部分介绍了深度强化习的基本理论和实现方法,并使用PyTorch框架实现了深度Q网络(DQN)算法,应用于OpenAI Gym游戏环境中。 本书的内容涵盖了深度学习的多个方面,适合广大读者习和实践。同时,本书使用Python语言和PyTorch框架,使得读者能够快速上手,掌握深度学习的基础知识和PyTorch框架的用法。最后,本书提供了大量实例代码和练习题,帮助读者深入理解和应用所知识。 ### 回答2: PyTorch深度学习简明实战电子版是一本介绍PyTorch深度学习框架的实战教程。本书分为三个部分,第一部分是基础知识,包括PyTorch的基本操作、张量、自动求导、线性回归模型等内容;第二部分介绍深度学习的常用模型,包括卷积神经网络、循环神经网络、生成对抗网络等;第三部分是应用案例,包括图像分类、目标检测、自然语言处理等。 书中的案例非常实用,深入浅出地介绍了每个模型的实现原理和使用方法。而且,书中使用的数据集是实际的数据集,例如MNIST手写数字识别、CIFAR-10图像分类等,能够充分体现PyTorch在实际应用中的优势。 本书的特色在于其简洁明了的讲解方式,将深度学习框架PyTorch的基本操作及其应用形象生动地展现出来。此外,本书还提供了丰富的代码实现、调试和性能优化技巧,为读者提供了一系列实用的工具来应对实际问题。 总之,PyTorch深度学习简明实战电子版是一本非常实用的教材,不仅能够帮助读者快速掌握PyTorch的各项功能,还能够让读者在实践中深入理解深度学习的实现原理。该书对于人工智能相关行业的从业者、生以及对深度学习感兴趣的读者都是一本值得阅读的好书。 ### 回答3: PyTorch深度学习简明实战电子版是一本针对深度学习者推出的实战教程,主要原因是PyTorch是一个非常适合于初者的深度学习框架,其将深度学习任务分解成容易理解和实现的步骤。此书包含了丰富的实际应用案例,以及详细的实现代码和运行结果分析。通过阅读本书,读者可以习到深度学习的核心概念,如神经网络、梯度下降、损失函数等,并且能够了解如何使用PyTorch中的各种工具来构建和训练深度神经网络。本书还着重强调了PyTorch的动态图机制,这一点与其他深度学习框架的静态图机制不同,动态图机制允许我们更加直观地进行模型设计和调试。在本书中,作者还涉及了一些高级技术,如循环神经网络、深度卷积网络等,从而为读者提供更加全面的知识体系。总之,PyTorch深度学习简明实战电子版是一本值得推荐的实战教程,既适合初者入门,也可以帮助专业人士深入了解PyTorch的实际应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值