相关参数
python
torch.backends.cudnn.enabled
torch.backends.cudnn.benchmark
torch.backends.cudnn.deterministic
- torch.backends.cudnn.benchmark
- True:将会让程序在开始时花费一点额外时间,为整个网络的每个卷积层搜索最适合它的卷积实现算法,进而实现网络的加速。适用场景是网络结构固定(不是动态变化的),网络的输入形状(包括 batch size,图片大小,输入的通道)是不变的
- 只对卷积层做优化?
- Loss 输入变化是否会受到影响?
- False:不做优化(默认是False)
- True:将会让程序在开始时花费一点额外时间,为整个网络的每个卷积层搜索最适合它的卷积实现算法,进而实现网络的加速。适用场景是网络结构固定(不是动态变化的),网络的输入形状(包括 batch size,图片大小,输入的通道)是不变的
- torch.backends.cudnn.enabled
只要有cuda/cudnn,pytorch会默认开启cuda/cudnn后端
只要尺寸固定,就可以通过启发式的思想去搜索一个合适的算法。
要将PyTorch后端设置为cuDNN,你需要满足以下条件:- 安装合适版本的NVIDIA驱动程序:确保你的计算机上安装了适用于你的GPU的最新NVIDIA驱动程序。
- 安装CUDA:下载并安装与你的GPU和操作系统兼容的CUDA版本。你可以从NVIDIA官方网站上获取CUDA的安装包。
- 安装cuDNN:下载并安装与你的CUDA版本兼容的cuDNN。你需要注册为NVIDIA开发者才能访问cuDNN的下载页面。
一旦你完成了上述安装步骤,PyTorch将自动检测并使用CUDA和cuDNN作为后端。你可以通过以下代码验证是否成功设置了cuDNN作为PyTorch后端:
python
import torch
print(torch.backends.cudnn.enabled)
如果输出结果为True,则表示cuDNN已成功设置为PyTorch的后端。这意味着PyTorch将利用cuDNN加速深度神经网络的计算。
- 额外知识
卷积的实现算法- 多层循环,滑动窗计算
- GEMM (General Matrix Multiply)
- Winograd 算法
特点:每种算法会有一些独特的优势。