1.4.初见PyTorch

1.4.1.PyTorch生态

1.4.2.PyTorch能做什么?

GPU加速
自动求导
常用网络层

nn.Linear
nn.Conv2d
nn.LSTMnn.ReLU
nn.Sigmoidnn.Softmax
nn.CrossEntropyLoss
nn.MSE

1.4.3.PyTorch之Autograd

以下部分来自:https://www.cnblogs.com/xueqiuqiu/p/7513721.html
在PyTorch中,autograd是所有神经网络的核心内容,为Tensor所有操作提供自动求导方法。

它是一个按运行方式定义的框架,这意味着backprop是由代码的运行方式定义的。

1.4.3.1.Variable

autograd.Variable是autograd中最核心的类。它包装了一个Tensor,并且几乎支持所有在其上定义的操作。一旦完成了你的运算,你可以调用.backward()来自动计算出所有的梯度。

Variable有三个属性:data , grad以及creator。

访问原始的tensor使用属性.data; 关于这一Variable的梯度则集中于 .grad; .creator反映了创建者,标识了是否由用户使用.Variable直接创建(None)。

还有一个对autograd的实现非常重要的类—Function。Variable和Function数是相互关联的,并建立一个非循环图,从而编码完整的计算过程。每个变量都有一个.grad_fn属性引用创建变量的函数(除了用户创建的变量,它们的grad_fn是None)。

# -*- coding: UTF-8 -*-import torch
from torch.autograd import Variable

创建变量X:

x = Variable(torch.ones(2, 2), requires_grad=True)
print(x)

输出结果:

tensor([[1., 1.],[1., 1.]], requires_grad=True)

在X基础上进行运算:

y = x + 2
print(y)

输出结果:

tensor([[3., 3.],[3., 3.]], grad_fn=<AddBackward0>)

查看x的grad_fn:
print(x.grad_fn)
输出结果为:
None

查看y的grad_fn:

print(y.grad_fn)

输出结果为:

<AddBackward0 object at 0x000001BA69C73E48>

可以看到y是作为运算的结果产生的,所以y有grad_fn,而x是直接创建的,所以x没有grad_fn。

在y基础上进行运算:

z = y * y * 3            #前两个相当于是矩阵相乘
out = z.mean()
print(z)
print(out)

输出结果为:

tensor([[27., 27.],
[27., 27.]], grad_fn=<MulBackward0>)tensor(27., grad_fn=<MeanBackward0>)

1.4.4.autograd案例

# -*- coding: UTF-8 -*-import torch
from torch import autogradx = 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 ** 3 *  x + cprint('before:', a.grad, b.grad, c.grad)
# 分别对a,b,c求导(对某个值进行求导的时候,别的作为常量)
grads = autograd.grad(y, [a, b, c])
print('after :', grads[0], grads[1], grads[2])
运行结果:
before: None None None
after : tensor(2.) tensor(12.) tensor(1.)

1.4.5.GPU加速案例

# -*- coding: UTF-8 -*-import torch
import timeprint(torch.__version__)
print(torch.cuda.is_available())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))# 使用cuda
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))

04_Pytorch生态、PyTorch能做什么、PyTorch之Autograd、autograd案例、GPU加速案例相关推荐

  1. PyTorch | (2)PyTorch 入门-张量

    PyTorch | (1)初识PyTorch PyTorch | (2)PyTorch 入门-张量 PyTorch 是一个基于 Python 的科学计算包,主要定位两类人群: NumPy 的替代品,可 ...

  2. anaconda重新安装pytorch,使用GPU加速

    前言 之前由于要使用pytorch,所以就一股脑儿地安装了.安装方法如下(当时安装pytorch的时候我没有管那个CUDA版本,以为不碍事): https://blog.csdn.net/qq_433 ...

  3. Pytorch gpu加速方法

    Pytorch gpu加速方法 原文: https://www.zhihu.com/question/274635237 relu 用 inplace=True 用 eval() 和 with tor ...

  4. Pytorch学习:Task4 PyTorch激活函数原理和使用

    Pytorch学习:Task4 PyTorch激活函数原理和使用 1.torch.nn.ELU Sigmoid和ReLU结合体,具有左侧软饱和性 2.torch.nn.LeakyReLU 数学表达式: ...

  5. pytorch 安卓_兼容PyTorch、TF,史上最灵活Python机器学习框架发布 | 一周AI最火论文...

    大数据文摘出品 作者:Christopher Dossman 编译:Olivia.Joey.云舟 呜啦啦啦啦啦啦啦大家好,本周的AI Scholar Weekly栏目又和大家见面啦!AI Schola ...

  6. 【PyTorch教程】P30 GPU加速

    P30 GPU加速 调用 GPU的两种方法: 1.调用 .cuda() 在这三个内容后面,加上 .cuda()方法 下图中,在原来的三种内容上,分别加上.cuda( ),就可以了:让他们的返回值,继续 ...

  7. pytorch自动编码_用pytorch第2部分从头开始编码ppo 4

    pytorch自动编码 Welcome to Part 2 of our series, where we shall start coding Proximal Policy Optimizatio ...

  8. Ubuntu18.04下安装深度学习框架Pytorch(GPU加速)

    前面我们已经在windows10环境下成功安装了CPU版本的Pytorch,推荐的是利用Anaconda安装. 经过接近一天的奋战,博主成功在linux系统安装GPU加速的pytorch,博主使用的发 ...

  9. PyTorch 1.12发布,正式支持苹果M1芯片GPU加速,修复众多Bug

    作者丨陈萍 来源丨机器之心 PyTorch 1.12 正式发布,还没有更新的小伙伴可以更新了. 距离 PyTorch 1.11 推出没几个月,PyTorch 1.12 就来了!此版本由 1.11 版本 ...

最新文章

  1. c语言链表创建递归,递归创建二叉树c语言实现+详细解释
  2. Linux终端下 dstat 监控工具
  3. Ubuntu 14.04 hadoop单机安装
  4. Android Studio下载及安装3.0版本
  5. Hash MD5 CRC 知识
  6. 安装python37路径报错_Robot framework安装python3.7导入HttpLibrary.HTTP报错
  7. 小米平板5有望8月发布:骁龙870+120Hz刷新率屏
  8. 清晰架构的 Go 微服务: 程序容器
  9. mac如何使用「磁盘工具」创建dmg 映像文件
  10. 安装pgadmin3
  11. 如何制作伪原创视频?呆头鹅批量视频剪辑软件一键处理10万个视频
  12. Juce之旅-第一个例子(图形窗口)
  13. Guass(高斯消元+模板)
  14. 【Hexo】hexo在文章中添加图片
  15. 【20CSPS提高组】儒略日
  16. .gitignore文件不生效
  17. ios App加载网页,点击网页链接调用App处理
  18. 西安交通大学学生邮箱设置
  19. CodeForces - 332B  Maximum Absurdity   前缀和
  20. 横河川仪压力变送器故障代码_压力变送器常见故障解决方法

热门文章

  1. python模块和类_Python类、模块、包的区别
  2. OpenCASCADE可视化:应用交互服务之本地选择
  3. boost::phoenix模块使用 istreambuf_iterator 测试 lambda 函数对象
  4. boost::mpi::cartesian_topology相关用法的测试程序
  5. boost::mp11::tuple_apply相关用法的测试程序
  6. boost::log模块实现多线程异步日志记录示例
  7. boost::graph模块实现边列表算法上的连通分量
  8. boost::fusion::insert用法的测试程序
  9. boost::function_types::is_member_object_pointer的用法测试程序
  10. boost::function_types::is_function_reference的测试程序