『笔记』PyTorch
『笔记』PyTorch
阅读官网文档
https://www.notion.so/PyTorch-a74018ebe2e1473e9a5a690e7c73a19b
深度学习相关知识
神经网络中 warmup 策略为什么有效;有什么理论解释么?
为什么 A40 GPU Pytorch 无法并行训练? - Mediocrity的回答 - 知乎
-
因为pytorch定义的网络模型参数默认放在gpu 0上,所以dataparallel实质是可以看做把训练参数从gpu 0拷贝到其他的gpu同时训练,此时在dataloader加载数据的时候,batch_size是需要设置成原来大小的n倍,n即gpu的数量。
PyTorch 源码解读之 cpp_extension:揭秘 C++/CUDA 算子实现和调用全流程
关于一些通用函数
gather
contiguous
To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach()
PyTorch:view() 与 reshape() 区别详解
关于一些通用类
理解nn.Parameter
看官方文档就行了:

其他:
-
Q:在pytorch里面,为什么torch.nn.Parameter放在字典里就不会更新了,必须单独定义?
A: 使用ParameterDict即可。本质:在PyTorch的模型中定义变量时,会触发nn.Module 的 __setattr__方法,如果定义变量的类型是Parameter、Module、Buffer等特殊类型,那么PyTorch会对这个变量进行注册,经过注册的变量才算是模型的一部分,后续训练的过程中才会更新梯度。而当你用self.params = [param1, param2]这种写法时,setattr 方法发现入参是一个list对象,因此不会去注册。而之所以ParameterDict能生效,是因为ParameterDict是继承的nn.Module类,因此__setattr__能够正确注册。

浙公网安备 33010602011771号