动手学深度学习(五):深度学习计算
(一) 自定义层和块
在之前使用Pytorch的API的时候我们通常都是直接使用net = nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))
,实际上这是一个Module
类的列表.调用net()
其实也是net.__call__()
.
就我看来这个意义不是很大,实际上就是将一些代码整理为了一个类更方便逻辑理解.比如net = nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))
就能表示为这样一个块:
1 | class MLP(nn.Module): |
当然还能添加其它代码使这个块的功能更丰富.
(二) 参数管理
Pytorch提供的对模型参数的读写.
net[i].state_dic()
返回该层参数字典weight
和bias
net[i].bias.data
直接访问张量net[i].weight.grad
直接访问梯度*[(name, param.shape) for name, param in net.named_parameters()] #('0.weight', torch.Size([8, 4])) ('0.bias', torch.Size([8])) ('2.weight', torch.Size([1, 8])) ('2.bias', torch.Size([1]))
(三) 读写文件
torch.save(tensor,'tensor-file')
存,torch.load('tensor-file')
读
(四) GPU
1 | torch.cuda.device_count() # 查看GPU数量 |
- 标题: 动手学深度学习(五):深度学习计算
- 作者: EliorFoy
- 创建于 : 2024-11-05 01:47:12
- 更新于 : 2024-11-05 01:47:24
- 链接: https://eliorfoy.github.io/2024/11/05/大三上/动手学深度学习(五):深度学习计算/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。