在深度学习网络中,通常使用GPU来加速我们的网络训练,但我们需要将数据还有模型从CPU传送到GPU上才能正常进行训练。
1、深度学习网络中哪些东西需要转移到GPU上?
(1)模型
(2)损失函数
(3)数据集的样本和标签
2、Pytorch实现
model = DABNet() #实例化DABNet网络模型
model = model.cuda() #将模型从CPU转移到GPU中loss = torch.nn.CrossEntropyLoss() #定义一个损失函数
loss = loss.cuda() #将损失函数传入GPU中for iteration, batch in enumerate(train_loader, 0): #从dataLoder中获取数据集image, label = batch #从batch中获取样本和标签image = image.cuda() #将样本传入GPUlabel = label.cuda() #将标签传入GPU#将GPU上面的数据取出到CPU上面时采用.cpu()操作
data = data.cpu() #数据从GPU传入CPU
3、注意点
(1)将模型传入GPU后,模型中初始化的参数也自动传到GPU上了
(2)存储在CPU上面的变量不能和存储在GPU上面的变量进行运算
(3)存储在不同GPU上面的变量也不能进行运算
4、数据转移后数据类型的变化
(1)Tensor数据类型的变化
简单的拿torch.FloatTensor类型的变量举例,该变量经过.cuda()操作后,数据类型会改变成torch.cuda.FloatTensor。
(2)网络模型数据类型的变化
网络模型传入GPU后,网络模型中的参数的数据类型变化如Tensor数据类型变化一致。
参考文献
将Pytorch模型从CPU转换成GPU的实现方法_python_脚本之家www.jb51.net[开发技巧]·PyTorch如何使用GPU加速(CPU与GPU数据的相互转换)_极简AI-CSDN博客_pytorch gpu加速blog.csdn.net
创作地:2020.08.03于老家