使用GPU进行训练,方式一:
- 需要在网络模型的实例创建处、数据(输入、标签)处、损失函数的实例创建处,更改为.cuda(),代码如下:
- 注意:只有数据(输入、标签)需要将.cuda()后的重新赋值给原变量名,网络模型和损失函数不需要,这里为了方便记忆,就都重新赋值了
tudui = Tudui()
tudui = tudui.cuda()
for data in train_loader:
inputs, targets = data
inputs = inputs.cuda()
targets = targets.cuda()
loss_fn = nn.CrossEntropyLoss()
loss_fn = loss_fn.cuda()
- 由下图可知,GPU训练的速度还是很快的:
使用GPU进行训练,方式二:
- 需要在一开始定义运行设备,device = torch.device(‘cuda’)
- 注意:‘cpu’ 表示在cpu上运行,‘cuda’ 表示在gpu上运行,‘cuda:0’ 表示在第一张显卡上运行,‘cuda:1’ 表示在第二张显卡上运行
- 注意:只有数据(输入、标签)需要将.to(device)后的重新赋值给原变量名,网络模型和损失函数不需要,这里为了方便记忆,就都重新赋值了
- 并在网络模型的实例创建处、数据(输入、标签)处、损失函数的实例创建处,更改为.to(device),代码如下:
device = torch.device('cuda')
tudui = Tudui()
tudui = tudui.to(device)
loss_fn = nn.CrossEntropyLoss()
loss_fn = loss_fn.to(device)
for data in train_loader:
inputs, targets = data
inputs = inputs.to(device)
targets = targets.to(device)
- 注意,有的代码会将判断cuda.is_available()放在()中,如下:
- 表示如果cuda可用就使用gpu,否则就使用cpu