pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019-08-19 16:42
3827 查看
如下所示:
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")#第一行代码 model.to(device)#第二行代码
首先是上面两行代码放在读取数据之前。
mytensor = my_tensor.to(device)#第三行代码
然后是第三行代码。这句代码的意思是将所有最开始读取数据时的tersor变量copy一份到device所指定的GPU上去,之后的运算都在GPU上进行。需要注意的是这句话并不像前面的两行代码一样只需要写一遍,第三行代码需要写的次数就等于需要保存到GPU上的tensor变量个数;一般情况下这些tensor变量都是最开始读取数据时的tensor变量,后面所衍生的变量自然也都在GPU之上。
以上是使用单个GPU的情况。当你拥有多个GPU时,要想使用多个GPU进行训练和测试,需要在第一二行代码之间插上下面这样一个判断语句,其余的写法也都是一样的。
if torch.cuda.device_count() > 1: model = nn.DataParallel(model)
使用多个GPU的原理就是通过上面这句代码将model在每个GPU上分别保存一份,然后对model的输入tensor进行自动的分割,每个GPU计算tensor的一部分,这样就能实现计算量的平均分配。在每个model计算完成之后,DataParallel将这些结果进行收集和融合,之后再将结果返回。
以上这篇pytorch 使用单个GPU与多个GPU进行训练与测试的方法就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
相关文章推荐
- 使用PyTorch进行训练和测试时一定注意要把实例化的model指定train/eval
- 解决了PyTorch 使用torch.nn.DataParallel 进行多GPU训练的一个BUG:模型(参数)和数据不在相同设备上
- 使用loadrunner Java Vuser协议进行性能测试时场景中报Error: Compilation process failed.解决方法
- 使用 Fiddler2 进行接口测试的方法
- 使用GPU在caffe上进行CNN训练
- 使用Angular CLI进行单元测试和E2E测试的方法
- 使用 JUnit 进行容器内测试(常用的两种测试方法)
- eclipse中,junit对单个方法进行测试时空指针异常(java.lang.NullPointerException)
- 【PyTorch图像语义分割】4. 使用训练好的模型测试
- 使用dcmtk进行worklist服务的测试方法
- 使用conlleval.pl对CRF测试结果进行评价的方法
- 在今天的测试过程中,我刚开始使用get方法传递参数,出现乱码,但是使用post传参数好着的,需要在tomcat的server.xml里面进行设置URIEncoding="UTF-8"即可
- 使用jmeter进行dubbo协议的测试方法
- 使用Lenet5对mnist数据集进行训练和测试
- Pytorch:使用GPU训练
- 使用GPU在caffe上进行CNN训练
- Win7下的使用QTP进行猴子测试的性能日志实现方法
- 深度学习文章5:使用caffe对自己的图像数据进行训练并测试
- 使用caffe的Python接口进行训练测试
- 在IDEA中使用JUnit进行方法测试