python gpu加速 显卡_PyTorch-GPU加速实例
硬件:NVIDIA-GTX1080
软件:Windows7、python3.6.5、pytorch-gpu-0.4.1
一、基础知识
将数据和网络都推到GPU,接上.cuda()
二、代码展示
import torch
import torch.nn as nn
import torch.utils.data as Data
import torchvision
# torch.manual_seed(1)
EPOCH = 1
BATCH_SIZE = 50
LR = 0.001
DOWNLOAD_MNIST = False
train_data = torchvision.datasets.MNIST(root='./mnist/', train=True, transform=torchvision.transforms.ToTensor(), download=DOWNLOAD_MNIST,)
train_loader = Data.DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)
test_data = torchvision.datasets.MNIST(root='./mnist/', train=False)
# !!!!!!!! Change in here !!!!!!!!! #
test_x = torch.unsqueeze(test_data.test_data, dim=1).type(torch.FloatTensor)[:2000].cuda()/255. # Tensor on GPU
test_y = test_data.test_labels[:2000].cuda()
class CNN(nn.Module):
def __init__(self):
super(CNN, self).__init__()
self.conv1 = nn.Sequential(nn.Conv2d(in_channels=1, out_channels=16, kernel_size=5, stride=1, padding=2,),
nn.ReLU(), nn.MaxPool2d(kernel_size=2),)
self.conv2 = nn.Sequential(nn.Conv2d(16, 32, 5, 1, 2), nn.ReLU(), nn.MaxPool2d(2),)
self.out = nn.Linear(32 * 7 * 7, 10)
def forward(self, x):
x = self.conv1(x)
x = self.conv2(x)
x = x.view(x.size(0), -1)
output = self.out(x)
return output
cnn = CNN()
# !!!!!!!! Change in here !!!!!!!!! #
cnn.cuda() # Moves all model parameters and buffers to the GPU.
optimizer = torch.optim.Adam(cnn.parameters(), lr=LR)
loss_func = nn.CrossEntropyLoss()
for epoch in range(EPOCH):
for step, (x, y) in enumerate(train_loader):
# !!!!!!!! Change in here !!!!!!!!! #
b_x = x.cuda() # Tensor on GPU
b_y = y.cuda() # Tensor on GPU
output = cnn(b_x)
loss = loss_func(output, b_y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if step % 50 == 0:
test_output = cnn(test_x)
# !!!!!!!! Change in here !!!!!!!!! #
pred_y = torch.max(test_output, 1)[1].cuda().data # move the computation in GPU
accuracy = torch.sum(pred_y == test_y).type(torch.FloatTensor) / test_y.size(0)
print('Epoch: ', epoch, '| train loss: %.4f' % loss, '| test accuracy: %.2f' % accuracy)
test_output = cnn(test_x[:10])
# !!!!!!!! Change in here !!!!!!!!! #
pred_y = torch.max(test_output, 1)[1].cuda().data # move the computation in GPU
print(pred_y, 'prediction number')
print(test_y[:10], 'real number')
三、结果展示
补充知识:pytorch使用gpu对网络计算进行加速
1.基本要求
你的电脑里面有合适的GPU显卡(NVIDA),并且需要支持CUDA模块
你必须安装GPU版的Torch,(详细安装方法请移步pytorch官网)
2.使用GPU训练CNN
利用pytorch使用GPU进行加速方法主要就是将数据的形式变成GPU能读的形式,然后将CNN也变成GPU能读的形式,具体办法就是在后面加上.cuda()。
例如:
#如何检查自己电脑是否支持cuda
print torch.cuda.is_available()
# 返回True代表支持,False代表不支持
'''
注意在进行某种运算的时候使用.cuda()
'''
test_data=test_data.test_labels[:2000].cuda()
'''
对于CNN与损失函数利用cuda加速
'''
class CNN(nn.Module):
...
cnn=CNN()
cnn.cuda()
loss_f = t.nn.CrossEntropyLoss()
loss_f = loss_f.cuda()
而在train时,对于train_data训练过程进行GPU加速。也同样+.cuda()。
for epoch ..:
for step, ...:
1
'''
若你的train_data在训练时需要进行操作
若没有其他操作仅仅只利用cnn()则无需另加.cuda()
'''
#eg
train_data = torch.max(teain_data, 1)[1].cuda()
补充:取出数据需要从GPU切换到CPU上进行操作
eg:
loss = loss.cpu()
acc = acc.cpu()
理解并不全,如有纰漏或者错误还望各位大佬指点迷津
以上这篇PyTorch-GPU加速实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。
python gpu加速 显卡_PyTorch-GPU加速实例相关推荐
- python gpu加速 显卡_使用Python玩转GPU
问题 随着机器学习对模型运算速度的需求越来越强烈, 一直想进行GPU编程,但一直以来这些都是c++的专利 一想到c++里的各种坑,就提不起劲来,毕竟这样来来回回填坑的投入产出,生产效率就会大打折扣 解 ...
- 计算机视觉用显卡,基于GPU加速的计算机视觉编程:使用OpenCV和CUDA实时处理复杂图像数据...
本书是OpenCV开发人员的推荐阅读指南,手把手教你使用OpenCV和CUDA实现GPU加速的计算机视觉项目开发,帮你快速掌握利用GPU实时处理复杂图像数据的高效技术.全书共11章,章介绍CUDA架构 ...
- python调用gpu运算_使用GPU加速numpy运算
自2012年AlexNet横空出世以来,GPU用于为矩阵运算进行加速开始在工业界和研究人员中获得了广泛关注.尤其是近来推出的各种深度学习框架,如mxnet.TensorFlow等,GPU加速更是不可或 ...
- 朱俊彦团队提出GAN压缩算法:计算量减少20倍,生成效果不变,GPU、CPU统统能加速...
边策 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 现如今,GAN的效果已经越来越出神入化. 比如英伟达的GauGAN,就如神笔马良,能够凭空造物: 不过,从无化有背后,计算量也相当惊人 ...
- PostgreSQL GPU 加速(HeteroDB pg_strom) (GPU计算, GPU-DIO-Nvme SSD, 列存, GPU内存缓存)
标签 PostgreSQL , GPU , heteroDB , pg_strom , CUDA , nvidia , DIO , Nvme , SSD , 列存 , GPU内存缓存 背景 Heter ...
- 阿里云高级技术专家林立翔:基于阿里云弹性GPU服务的神龙AI加速引擎,无缝提升AI训练性能
2023 年 3 月 23 日 14:00,NVIDIA GTC 开发者大会阿里云开发者社区观看入口正式开放,阿里云高级技术专家林立翔带来了题为<基于阿里云弹性 GPU 服务的神龙 AI 加速引 ...
- 什么是GPU加速,如何使用GPU加速,GPU加速的缺点
GPU 硬件加速是指应用 GPU 的图形性能对浏览器中的一些图形操作交给 GPU 来完成,因为 GPU 是专门为处理图形而设计,所以它在速度和能耗上更有效率 GPU 加速通常包括以下几个部分:Canv ...
- matlab win10 gpu加速,win10怎么开启gpu加速有用吗 GPU硬件加速设置方法介绍
win10怎么开启gpu加速有用吗 GPU硬件加速设置方法介绍 作为Windows 10的一项重要功能,微软在分享了GPU硬件加速细节后,现在还为大家送上了开启它的技巧,对于中低端设备来说,提升效果还 ...
- gpu超算算法_GPU: 超算加速
在2010年5月份出炉的一份世界超级计算机500强的榜单中,美国Cray的美洲豹"Jaguar",凭借每秒1750万亿次的实测计算能力傲视群雄,排名榜首.但是时隔不久,由中国国防科 ...
最新文章
- ActivityGroup是如何对嵌入的Activitys进行管理的
- import export php,import与export在node.js中的使用方法
- VMware ESXi导出OVF模板
- 应急响应的整体思路一
- ActivityGroup 例子
- oauth2授权码模式——微信第三方登录原理
- 土壤类型空间分布数据介绍
- SQLServer数据库可疑的解决方法
- win10 系统把装在c盘的软件移到其他盘的方法
- 配置阿里云maven仓库地址
- 论文相关------如何在论文写作中使用拉丁文简写
- 记一次axsi2调用 web services 提示 java.net.SocketException: Connection reset 的解决
- 变量选择详解与源码实现
- Matlab 2018b 安装问题 - License checkout failed
- go---- mgo
- 网络攻击与防御——对局域网的攻击
- 【MySQL多表操作练习】
- 乐鑫esp32-c2开发演示
- vb.net 教程 1-12 Hashtable
- 北邮信通导论第三单元焦耳小偷升压电路
热门文章
- 用Schema来决定CSV文件的字段类型
- setTimeout() 方法的返回值
- python中 .sort()、 sorted()和 .reverse() 、reversed()的区别
- python向数据库传输数据时弹出not enough arguments for format string怎么办
- 查询成绩(要求用链表完成)
- c语言一整行一整行读取文件
- future.channel().closeFuture().sync()作用 bind(port).sync()作用
- Jackson 注解 -- 使用构造器
- 何为消息队列,为何使用消息队列,有什么消息队列插件
- docker基本组成