本文搭配了Pytorch在线环境,可以直接在线体验。

Pytorch是Facebook 的 AI 研究团队发布了一个基于 Python的科学计算包,旨在服务两类场合: 1.替代numpy发挥GPU潜能 ;2. 一个提供了高度灵活性和效率的深度学习实验性平台。

在线体验练习地址:Pytorch快速上手/在线实验室

1.Pytorch简介

Pytorch是Facebook 的 AI 研究团队发布了一个基于 Python的科学计算包,旨在服务两类场合:

  • 替代numpy发挥GPU潜能(在线环境暂时不支持GPU)
  • 一个提供了高度灵活性和效率的深度学习实验性平台

2.Pytorch特点及优势

2.1 Pytorch特点

  • PyTorch 提供了运行在 GPU/CPU 之上、基础的张量操作库;
  • 可以内置的神经网络库;
  • 提供模型训练功能;
  • 支持共享内存的多进程并发(multiprocessing )库等;

2.2 Pytorch特点

处于机器学习第一大语言 Python 的生态圈之中,使得开发者能使用广大的 Python 库和软件;如 NumPy、SciPy 和 Cython(为了速度把 Python 编译成 C 语言);

(最大优势)改进现有的神经网络,提供了更快速的方法——不需要从头重新构建整个网络,这是由于 PyTorch 采用了动态计算图(dynamic computational graph)结构,而不是大多数开源框架(TensorFlow、Caffe、CNTK、Theano 等)采用的静态计算图;

提供工具包,如torch 、torch.nn、torch.optim等;

3.Pytorch常用工具包

  • torch :类似 NumPy 的张量库,强 GPU 支持 ;
  • torch.autograd :基于 tape 的自动区别库,支持 torch 之中的所有可区分张量运行;
  • torch.nn :为最大化灵活性未涉及、与 autograd 深度整合的神经网络库;
  • torch.optim:与 torch.nn 一起使用的优化包,包含 SGD、RMSProp、LBFGS、Adam 等标准优化方式;
  • torch.multiprocessing: python 多进程并发,进程之间 torch Tensors 的内存共享;
  • torch.utils:数据载入器。具有训练器和其他便利功能;
  • torch.legacy(.nn/.optim) :处于向后兼容性考虑,从 Torch 移植来的 legacy 代码;

4.tensor的创建

  • 导入pytorch的包 import torch
  • jupyter notebook
import torch
#创建一个5*3的随机矩阵并显示它(Shift+Enter)
x=torch.rand(5,3)
x

5.tensor的运算

y=torch.ones(5,3)
#创建一个5*3的全是1矩阵并显示它
y
#计算两个矩阵相加(注意尺寸要一模一样)
z=x+y
z
#矩阵乘法,矩阵转置
q=x.mm(y.t())

所有Numpy上面关于ndarray的运算全部可以应用于tensor

有关tensor的运算参考 http://pytorch.org/docs/master/tensors.html

  • 从numpy到tensor的转换:torch.from_numpy(a)
  • 从tensor到numpy的转换:a.numpy()
  • tensor与numpy的最大不同:tensor可以在GPU上运算
  • 转到gpu上运算(x.cpu()转成cpu)
if torch.cuda.is_available():
x=x.cuda()
y=y.cuda()
print(x+y)

6.Numpy桥

将Torch的Tensor和numpy的array相互转换。注意Torch的Tensor和numpy的array会共享他们的存储空间,修改一个会导致另外的一个也被修改。

# 此处演示tensor和numpy数据结构的相互转换
a = torch.ones(5)
b = a.numpy() # 此处演示当修改numpy数组之后,与之相关联的tensor也会相应的被修改
a.add_(1)
print(a)
print(b) # 将numpy的Array转换为torch的Tensor
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b) # 另外除了CharTensor之外,所有的tensor都可以在CPU运算和GPU预算之间相互转换
# 使用CUDA函数来将Tensor移动到GPU上
# 当CUDA可用时会进行GPU的运算
if torch.cuda.is_available():
x = x.cuda()
y = y.cuda()
x + y

7.动态计算图(Dynamic Computation Graph)

  • 是pytorch的最主要特征
  • 让计算模型更灵活,复杂
  • 让反向传播算法随时进行

7.1自动微分变量

gradient梯度,传播的就是梯度

定义一个自动微分变量

from torch.autograd  import Variable
#Variable:自动微分变量
x=Variable(torch.ones(2,2),requires_grad=True)
#把一个2*2的张量转变成微分的变量(添加节点,构造计算图)
x y=x+2
y.creator
#y的父节点 z=torch.mean(y*y)
z.data

与tensor不同之处:记录下所有的计算路径,在内存中构造计算图

7.2多层运算

z=m((x+2)*(x+2))

一个多层神经网络

计算梯度:求导

z.backward()
#z对x的偏导
#只有叶节点可以算grad。只有x有grad信息,因为它没有父节点
print(z.grad)
print(y.grad)
print(x.grad)

7.3更疯狂的函数依赖

s=Variable(torch.FloatTensor([[0.01,0.02]]),requires_grad=True)
x=Variable(torch.ones(2,2),requires_grad=True)
for i in range(10):
s=s.mm(x)
#赋值的操作会多一个新节点出来
z=torch.mean(s) #backward()求导计算
z.backward()
print(x.grad)
print(s.grad)

8.神经网络

用 torch.nn 包可以进行神经网络的构建,点击实验楼开源软件库的教程:Pytorch快速上手/在线实验室即可马上查看并在线体验了;

  • 你也可以在线体验其他开源软件:实验楼软件库
  • 如果你对任何开源软件感兴趣,欢迎在下面留言,也欢迎提交你熟悉的开源软件。提交方法:软件库使用方法

Pytorch快速入门及在线体验的更多相关文章

  1. 【笔记】PyTorch快速入门:基础部分合集

    PyTorch快速入门 Tensors Tensors贯穿PyTorch始终 和多维数组很相似,一个特点是可以硬件加速 Tensors的初始化 有很多方式 直接给值 data = [[1,2],[3, ...

  2. PyTorch快速入门教程七(RNN做自然语言处理)

    以下内容均来自: https://ptorch.com/news/11.html word embedding也叫做word2vec简单来说就是语料中每一个单词对应的其相应的词向量,目前训练词向量的方 ...

  3. 《深度学习框架PyTorch:入门与实践》读书笔记

    https://github.com/chenyuntc/pytorch-book Chapter2 :PyTorch快速入门 + Chapter3: Tensor和Autograd + Chapte ...

  4. gulp快速入门&初体验

    前言 一句话先 gulp 是一个可以简单和自动化"管理"前端文件的构建工具 先说我以前的主要工作,我主要是做游戏服务端的,用c++/python,所以我对东西的概念理解难免要套到自 ...

  5. MongoDB快速入门指南与docker-compose快体验

    MongoDB快速入门指南与docker-compose快体验 MongoDB相对于RDBMS的优势 模式少 -MongoDB是一个文档数据库,其中一个集合包含不同的文档.一个文档之间的字段数,内容和 ...

  6. 专为设计师而写的GitHub快速入门教程

    专为设计师而写的GitHub快速入门教程 来源: 伯乐在线 作者:Kevin Li     原文出处: Kevin Li 在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目 ...

  7. CI Weekly #21 | iOS 持续集成快速入门指南

    搭建 iOS 持续集成环境要多久?每个 iOSer 都有不同的答案.这次我们整理了 flow.ci 的 iOS 持续集成的相关文档和最佳实践,希望帮你更快地完成构建.更新文档见: flow.ci iO ...

  8. JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署

    接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...

  9. UI设计初学者必看,这款设计神器教你快速入门

    网络时代,网页和手机App已经深入到人们生活的方方面面.这也使得App界面设计越来越受青年求职者们的青睐,并纷纷投入这个行业.但是,作为UI设计初学者,究竟如何才能快速的入门?当今市场上,是否有那么一 ...

随机推荐

  1. ThinkPHP框架 AJAX方法返回 AJAX实现分页例子:

    在模块控制器Controller文件夹里创建一个 FenyeController.class.php控制器 <?php namespace Admin\Controller; use Think ...

  2. jquery-1.11.2.min.js

    /*! jQuery v1.11.2 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ !function(a,b){& ...

  3. ubuntu16.04 ROS环境下配置和运行SVO

    ubuntu16.04 ROS环境下配置和运行SVO https://blog.csdn.net/nnUyi/article/details/78005552

  4. ROS中.launch文件的remap标签详解

    https://www.cnblogs.com/LiuQiang921202/p/7679943.html

  5. phoenix技术(安装部署和基本使用)讲解

    1.phoenix简介 Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问.Apache Phoenix会将用户编写 ...

  6. express工程的优化和请求参数的处理

    1.让工程自动刷新 在Express的默认工程中,ejs, jade等模板的改变会立刻被渲染到浏览器中,但是js的改变不能立即刷新.这时候我们要用到一些自动刷新工具, 如 nodemon, super ...

  7. lua--openresty--

    lua-openresty---docker-- https://blog.csdn.net/boling_cavalry/article/details/79290944 lua-practice ...

  8. 表单中Readonly和Disabled的区别:readonly在get和post可传值到后端,disabled不可

    http://www.nowamagic.net/html/html_ReadonlyAndDisabled.php Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能 ...

  9. Java中抽象类和抽象方法的区别

    抽象方法:在类中没有方法体的方法,就是抽象方法. 抽象类:含有抽象方法的类就叫抽象类. 抽象类中的抽象方法必须被实现! 如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类! 抽象类中的普通 ...

  10. 实验一:Java开发环境的熟悉

    实验一:Java开发环境的熟悉 一.实验一-1 在码云中建立"20165317exp1"的项目. 从git中下载该项目. 在"20165317exp1"目录下建 ...