PyTorch-01初见

PyTorch-01初见

同类框架:

在这里插入图片描述
在这里插入图片描述

PyTorch生态

在这里插入图片描述

PyTorch能做什么:

1、GPU加速

import 	torch
import  time
print(torch.__version__)
print(torch.cuda.is_available())
# print('hello, world.')

a = torch.randn(10000, 1000)
b = torch.randn(1000, 2000)

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)
t2 = time.time()
print(a.device, t2 - t0, c.norm(2))

t0 = time.time()
c = torch.matmul(a, b)
t2 = time.time()
print(a.device, t2 - t0, c.norm(2))

在这里插入图片描述
CPU时间为0.238秒,而第二个cuda上运行的时间为:0.342秒,运行时间比CPU所消耗的时间要多,这是因为第一次在cuda上运行时需要初始化,如果再次在cuda上运行,可以发现第三个cuda上运行的时间明显减少了,仅为0.0049秒,加速了50倍左右,因此使用GPU进行加速是非常方便的。

2、自动求导
pytorch提供了自动求导的功能,因为deep learning是一个关于梯度的学科,所以求导是非常重要的。

这里求X=1的时候,该函数y=a^2*x+bx+c所对应的三个倒数:
在这里插入图片描述
使用pytorch来实现这个过程:

import  torch
from    torch import autograd

x = torch.tensor(1.)
#requires_grad=True 的作用是让 backward 可以追踪这个参数并且计算它的梯度,即需要对a求导。这里a赋值为1,b赋值为2,c赋值为3.
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

#求导之前的a的梯度、b的梯度、c的梯度。
print('before:', a.grad, b.grad, c.grad)
#pytorch提供的autograd函数,返回∂y/∂a, ∂y/∂b, ∂y/∂c三个的偏微分值
grads = autograd.grad(y, [a, b, c])
print('after :', grads[0], grads[1], grads[2])

在这里插入图片描述
在没有运行之前,对应a、b、c的梯度信息是没有的。在运行完成后,a、b、c分别是2、1、1。为什么a对应的是2呢?应该是2a才对?因为a最开始被赋值为1了,2*1=2,随意是2。

3、常用网络层
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Henrik698

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值