当前位置:   article > 正文

pyTorch框架常用功能_pytorch框架一些经典的功能

pytorch框架一些经典的功能

1.用于GPU加速

        众所周知,在进行运算的时候,运算初期CPU是优于GPU的,但随着时间和数据的不断增加,GPU运算的优势就无限放大,因此GPU也广泛用于机器学子中。话不多说,直接上代码:

#GPU加速
import torch
import time
print(torch.__version__)
print(torch.cuda.is_available())

#a矩阵行列为10000,1000
a = torch.randn(10000,1000)
b = torch.randn(1000,2000)

#t0:开始时刻,t1:结束时刻,matmul:cpu模式矩阵乘法
t0 = time.time()
c = torch.matmul(a,b)
t1 = time.time()
print(a.device,t1-t0,c.norm(2))

device = torch.device('cuda')
a = a.to(device)
b = b.to(device)

t0 = time.time()
c = torch.matmul(a,b)
t1 = time.time()
print(a.device,t1-t0,c.norm(2))
#在计算一次,因为第一次使用cuda会有加载时间,导致不准确
t0 = time.time()
c = torch.matmul(a,b)
t1 = time.time()
print(a.device,t1-t0,c.norm(2))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

下图为运算结果:在这里插入图片描述
        由上图可以看出,再去除cuda首次加载时间后,GPU运算时间大大小于CPU运算时间。

2.用于自动求导

        y=a^2x+bx+c这个函数,求当x=1时的导数,分别为y对a,y对b,y对c,结果为2a,1,1。让我们来看代码:

#自动求导
import torch
ftom torch import autograd

x = torch.tensor(1.)
a = torch.tensor(1.,requires_grad=True)
b = torch.tensor(2.,requires_grad=True)
c = torch.tensor(3.,requires_grad=True)

y = a**2*x+b*x+c

#求导之前,abc的梯度
print('before:',a.grad,b.grad,c.grad)
grads = autograd.grad(y,[a,b,c])
print('after:',grads[0],grads[1],grads[2])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

给x初始值为1,a,b,c分别为1,2,3。
在这里插入图片描述
        由上图可知,得到的结果为2,1,1,因为我们初值设为1,如果为a则和预期一样。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号