前言:
之前一直用的是tensorflow和keras,没有接触过Pytorch,但是最近因为项目需求,必须要使用Pytorch,于是从娃娃抓起,从头学习下Pytorch,做点笔记以便日后查询。
对于笔者而言,学习某个深度学习框架,最好的资料是官方所给文档,pytorch也是如此,官方文档链接如下:
https://pytorch.org/docs/stable/index.html
一、基本设置篇
主要包括一些版本号查询,基本包的导入,显卡设置等,如有遗漏之处,烦请指出。
1 常用包导入及对应版本查询
以下操作基于ubuntu18.04。首先在终端输入python,然后进行对应包的调用和查询。
import torch
import torch.nn as nn
import torchvision
print(torch.__version__)
print(torch.version.cuda)
print(torch.backends.cudnn.version())
print(torch.cuda.get_device_name(0))
2 可复现性
由于机器的不同(主要是CPU和GPU型号),即使随机种子相同,也无法保证可复现性,但是在同一台机器上,复现性还是有所保障的。
做法:在程序开始时,预先设置torch的随机种子(这个是很基本但有用的操作),同时也可以将numpy的随机种子也固定。
np.random.seed(0)
torch.manual_seed(0)
torch.cuda.manual_seed_all(0)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
3 显卡设置
对于深度学习而言,计算能力极其重要,简单点说:你得有卡才行,光靠CPU是万万不行的。
如果你的机器有多张显卡,比如0,1,2号显卡,可以进行如下设置:
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0, 1, 2'
只有一张显卡:
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
除了在程序中预先设置好显卡,也可以在命令行运行时设置显卡。
CUDA_VISIBLE_DEVICES=0,1, 2 python3 train_model.py
也可以在命令行重置GPU。
nvidia-smi --gpu-reset -i [gpu_id]
显存不够时,可以清除显存。
torch.cuda.empty_cache()