【动手学深度学习】2 深度学习计算
约 1 分钟
这一讲我们主要来学习下构造模型的相关技术,包括读取、存储和计算,基本可以直接上手代码,文章属于小小补充。
更新历史
- 2019.11.07: 完成初稿
模型构造
前面我们是基于 Sequential 实例来构造网络的,如果我们想要搞更多自定义的东西,用 Module 类就非常合适。我们用 Module 的方式再实现一次 MLP,代码如下:
注意,通过 Module 我们可以实现很多不同的计算图机制,比如 Sequential, ModuleList 和 ModuleDict 等等
模型参数的访问、初始化和共享
这一部分主要是编写代码上的技巧,直接看代码:
一些要点:
- 如果网络中一个变量是
torch.nn.parameter.Parameter类型,会被自动添加到参数列表里 Parameter也是Tensor,有data和grad属性- 传入
Sequential模块是同一个Module实例,参数会共享,共享参数的梯度是累加的
自定义层
这一节也是比较基础的编码技巧,直接看代码:
读取和存储
我们可以直接使用 save 和 load 来存储/读取 Tensor,基于 pickle。其他的看代码:
使用 GPU 计算
使用 GPU 计算基本来来说要用好 .cuda() 函数,然后通过 .device 方法查看 Tensor 或者 Model 到底在哪里。其他的是一些操作细节,这里不赘述。