pytorch如何使用GPU
在本文中,我将介绍简单如何使用GPU
pytorch是一个非常优秀的深度学习的框架,具有速度快,代码简洁,可读性强的优点。
我们使用pytorch做一个简单的回归。
首先准备数据

import numpy as np
import matplotlib.pyplot as plt
import torch
from torch.autograd import Variable
import torch.nn as nn
x = np.random.randn(1000, 1)*4
w = np.array([0.5,])
bias = -1.68

y_true = np.dot(x, w) + bias #真实数据
y = y_true + np.random.randn(x.shape[0])#加噪声的数据
#我们需要使用x和y,以及y_true回归出w和bias
1
2
3
4
5
6
7
8
9
10
11
12
定义回归网络的类

class LinearRression(nn.Module):
def __init__(self, input_size, out_size):
super(LinearRression, self).__init__()
self.x2o = nn.Linear(input_size, out_size)
#初始化
def forward(self, x):
return self.x2o(x)
#前向传递
1
2
3
4
5
6
7
8
接下来介绍将定义模型和优化器

batch_size = 10
model = LinearRression(1, 1)#回归模型
criterion = nn.MSELoss() #损失函数
#调用cuda
model.cuda()
criterion.cuda()

optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
losses = []
1
2
3
4
5
6
7
8
9
下面就是训(练)练(丹)了

for i in range(epoches):
loss = 0
optimizer.zero_grad()#清空上一步的梯度
idx = np.random.randint(x.shape[0], size=batch_size)
batch_cpu = Variable(torch.from_numpy(x[idx])).float()
batch = batch_cpu.cuda()#很重要

target_cpu = Variable(torch.from_numpy(y[idx])).float()
target = target_cpu.cuda()#很重要
output = model.forward(batch)
loss += criterion(output, target)
loss.backward()
optimizer.step()

if (i +1)%10 == 0:
print('Loss at epoch[%s]: %.3f' % (i, loss.data[0]))
losses.append(loss.data[0])

plt.plot(losses, '-or')
plt.xlabel("Epoch")
plt.xlabel("Loss")

plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
下面是训练结果

Loss at epoch[9]: 5.407
Loss at epoch[19]: 3.795
Loss at epoch[29]: 2.352
Loss at epoch[39]: 1.725
Loss at epoch[49]: 1.722
Loss at epoch[59]: 1.044
Loss at epoch[69]: 1.044
Loss at epoch[79]: 0.771
Loss at epoch[89]: 1.248
Loss at epoch[99]: 1.862
1
2
3
4
5
6
7
8
9
10
总结一下。要调用cuda执行代码需要一下步骤

model.cuda()
criterion.cuda()
1
2
3
以及

batch_cpu = Variable(torch.from_numpy(x[idx])).float()
batch = batch_cpu.cuda()
target_cpu = Variable(torch.from_numpy(y[idx])).float()
target = target_cpu.cuda()
1
2
3
4
就是将模型和输入数据变为cuda执行的
,简直超级方便,良心推荐一波pytorch

---------------------
作者:小川爱学习
来源:CSDN
原文:https://blog.csdn.net/wuichuan/article/details/66969315
版权声明:本文为博主原创文章,转载请附上博文链接!

Pytorch使用GPU的更多相关文章

  1. Pytorch多GPU训练

    Pytorch多GPU训练 临近放假, 服务器上的GPU好多空闲, 博主顺便研究了一下如何用多卡同时训练 原理 多卡训练的基本过程 首先把模型加载到一个主设备 把模型只读复制到多个设备 把大的batc ...

  2. pytorch 多GPU训练总结(DataParallel的使用)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_40087578/artic ...

  3. Pytorch指定GPU的方法总结

    Pytorch指定GPU的方法 改变系统变量 改变系统环境变量仅使目标显卡,编辑 .bashrc文件,添加系统变量 export CUDA_VISIBLE_DEVICES=0 #这里是要使用的GPU编 ...

  4. Ubuntu下安装pytorch(GPU版)

    我这里主要参考了:https://blog.csdn.net/yimingsilence/article/details/79631567 并根据自己在安装中遇到的情况做了一些改动. 先说明一下我的U ...

  5. [转] pytorch指定GPU

    查过好几次这个命令,总是忘,转一篇mark一下吧 转自:http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如 ...

  6. Pytorch多GPU并行处理

    可以参数2017coco detection 旷视冠军MegDet: MegDet 与 Synchronized BatchNorm PyTorch-Encoding官方文档对CGBN(cross g ...

  7. pytorch 多GPU处理过程

    多GPU的处理机制: 使用多GPU时,pytorch的处理逻辑是: 1.在各个GPU上初始化模型. 2.前向传播时,把batch分配到各个GPU上进行计算. 3.得到的输出在主GPU上进行汇总,计算l ...

  8. Pytorch 多 GPU 并行处理机制

    Pytorch 的多 GPU 处理接口是 torch.nn.DataParallel(module, device_ids),其中 module 参数是所要执行的模型,而 device_ids 则是指 ...

  9. 怎么用 pytorch 查看 GPU 信息

    如果你用的 Keras 或者 TensorFlow, 请移步 怎么查看keras 或者 tensorflow 正在使用的GPU In [1]: import torch In [2]: torch.c ...

随机推荐

  1. JZOJ 5455 拆网线

    Time Limits: 1000 ms Memory Limits: 65536 KB Detailed Limits Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现 ...

  2. HR招聘_(十)_招聘方法论(供应商管理)

    招聘和供应商长期合作,所以供应商管理也至关重要.供应商一般分为猎头,渠道,外包三类. 猎头 高端职位,高难度职位,急需职位和量大职位会和猎头公司合作共同完成招聘任务,猎头公司一般会有两种服务,猎头和R ...

  3. poj 2406 Power Strings(KMP入门,next函数理解)

    Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 37685   Accepted: 15590 D ...

  4. Linux进程管理(三、 线程)

    // ---- refer glibc, pthread_create.c ----// int __pthread_create_2_0 (newthread, attr, start_routin ...

  5. PHP实现打印出库单,有没有实现过?

    https://mp.weixin.qq.com/s/X3JldplICRq7KR0HNFcpuw 背景 有时候你在实现一个出库订单之类的功能模块,这里也有可能要你的站点也实现相应的打印出库单预览,今 ...

  6. 【JZOJ4848】【GDOI2017模拟11.3】永恒的契约

    题目描述 宅邸迅速的燃烧着,必须带贝蒂走出禁书库!凭着感觉,又一次直接找到禁书库的门. "你,是那个人嘛?"400年了,当初圣域建立结界时没有进入圣域,被伤了心的人工精灵贝蒂,与强 ...

  7. iOS @IBDesignable和@IBInspectable

    http://www.tuicool.com/articles/JVNRBjY @IBDesignable和@IBInspectable 时间 2014-10-08 11:02:03  CSDN博客 ...

  8. switch范围判断

    <?php function grade($grade){ switch (true) { case $grade>=90: echo 'A'; break; case $grade> ...

  9. HTTP参考

    HTTP参考 一.HTTP码应码响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行. 响应码分五种类型,由它们的第一位数字表示: 1.1xx:信息,请求收到,继续处理 2.2xx ...

  10. Kubernetes1.3新特性:新的资源回收控制器

    (一)  核心概念 在kubernetes1.3中新增了一个资源回收控制器GarbaseCollector,用这个控制器来替代kubernetes1.3中的资源回收控制器GC. 如下为kubernet ...