文档章节

PyTorch快速入门教程一(环境配置)

earnpls
 earnpls
发布于 2017/07/02 09:05
字数 1104
阅读 1576
收藏 0

接下来我们将进入Pytorch快速入门系列教程,本系列主要参考深度炼丹的知乎专栏10分钟快速入门PyTorch,并且已经获得了作者的许可转载,同时文章会有较多改动,我将会以一个新手的视角带大家学习PyTorch,同时如果有不对的地方,欢迎大家到Pytorch中文网问答社区给我留言,大家也可以一觉分享交流!如果你还不知道pytorch是啥,可以去看一看以前的文章Pytorch是什么? 

环境配置

要学习pytorch,首先当然是需要安装pytorch了,目前pytorch只支持mac和linux,如果你的电脑是windows,装虚拟机或者双系统。如果想要愉快地学习,那么强烈推荐使用linux系统,因为所有的深度学习框架在linux上都有很好的支持,远远好于windows系统,而且linux也没有大家想象中的那么难学,目前linux系统的图形界面让大家上手的时候更加容易。

Linux或者Mac默认安装了python2.7系统,大家安装玩Linux系统以后接下来就是安装Pytorch了,其实安装很简单,大家可以参考:pytorch 如何安装?pip如何安装pytorch?

pytorch基础

装好了pytorch之后,正式进入我们的教程,pytorch基础部分,这个部分主要是介绍一下pytorch处理的对象以及操作。

Tensor

tensor就是张量的英文,表示多维的矩阵,比如一维就是向量,二维就是一般的矩阵等等,pytorch里面处理的单位就是一个一个的tensor

# -*- coding: utf-8 -*-
import torch

a = torch.Tensor(3,3)
print a

可以输出

1.00000e-42 *
  0.0000  0.0000  0.0000
  0.0000  4.8107  0.0000
  0.0000  0.0000  4.8093
[torch.FloatTensor of size 3x3]

size可以显示的得到其大小,如下代码会输出(3L, 3L)

# -*- coding: utf-8 -*-
import torch

a = torch.Tensor(3,3)
print a.size()

这个和numpy很相似,同时tensornumpy.array之间也可以相互转换

# -*- coding: utf-8 -*-
import torch

a = torch.Tensor(3,3)
print a.size()

tensor的运算也很简单,一般的四则运算都是支持的

Variable

pytorch和numpy不一样的地方就来了,就是其提供了自动求导功能,也就是可以自动给你你要的参数的梯度,这个操作又另外一个基本元素提供,Variable

# -*- coding: utf-8 -*-
import torch

a = torch.Tensor(3,3)
print a.size()
b = a.numpy()
print torch.from_numpy(b)

本质上Variable和Tensor没有区别,不过Variabel会放入一个计算图,然后进行前向传播,反向传播以及自动求导

一个Variable里面包含着三个属性,data,grad和creator,其中creator表示得到这个Variabel的操作,比如乘法或者加法等等,grad表示方向传播的梯度,data表示取出这个Variabel里面的数据

# -*- coding: utf-8 -*-
import numpy as np
import torch
from torch.autograd import Variable
import torch.nn as nn
import torch.nn.functional as F

# requires_grad 表示是否对其求梯度,默认是True
x = Variable(torch.Tensor([3]), requires_grad=True)
y = Variable(torch.Tensor([5]), requires_grad=True)
z = 2*x + y + 4

# 对x和y分别求导
print z.backward()

# x的导数和y的导数
print('dz/dx:{}'.format(x.grad.data))
print('dz/dy:{}'.format(y.grad.data))

输出

None
dz/dx:
 2
[torch.FloatTensor of size 1]

dz/dy:
 1
[torch.FloatTensor of size 1]

这就是一个简单的计算图的例子

神经网络

前面讲了两个操作对象,最后讲一下pytorch里面的模型建立,模型的建立主要依赖于torch.nn,torch.nn包含这个所有神经网络的层的结构

# -*- coding: utf-8 -*-
import numpy as np
import torch
from torch.autograd import Variable
import torch.nn as nn
import torch.nn.functional as F

# 基本的网络构建类模版
class net_name(nn.Module):
    def __init__(self):
        super(net_name,self).__init__()
        # 可以添加子网络
        self.conv1 = nn.Conv2d(3,10,3)
        # 具体每种层的参数可以查看文档

    def forward(self, x):
        # 定向前传播
        out = self.conv1(x)
        return out

这就是构建所有神经网络的模板,不管你想构建卷积神经网络还是循环神经网络或者是生成对抗网络都依赖于这个结构

在这里,我整理发布了Pytorch中文文档,方便大家查询使用,同时也准备了中文论坛,欢迎大家学习交流!

Pytorch中文文档

Pytorch中文论坛

Pytorch中文文档已经发布,完美翻译,更加方便大家浏览:

Pytorch中文网:https://ptorch.com/

Pytorch中文文档:https://ptorch.com/docs/1/

 

本文转载自:https://ptorch.com/news/5.html

earnpls
粉丝 6
博文 26
码字总数 74
作品 0
昌平
程序员
私信 提问
撒花!PyTorch 官方教程中文版正式上线,激动人心的大好事! - 知乎

红色石头的个人网站:红色石头的个人博客-机器学习、深度学习之路 什么是 PyTorch?其实 PyTorch 可以拆成两部分:Py+Torch。Py 就是 Python,Torch 是一个有大量机器学习算法支持的科学计算...

AI有道
昨天
0
0
PyTorch 官方中文教程包含 60 分钟快速入门教程,强化教程

PyTorch 是一个基于 Torch 的 Python 开源机器学习库,用于自然语言处理等应用程序。它主要由 d 的人工智能小组开发,不仅能够 实现强大的 GPU 加速,同时还支持动态神经网络,这一点是现在很...

磐创AI_聊天机器人
08/14
0
0
PyTorch:60分钟入门学习

最近在学习PyTorch这个深度学习框架,在这里做一下整理分享给大家,有什么写的不对或者不好的地方,还请大侠们见谅啦~~~ 写在前面 本文就是主要是对PyTorch的安装,以及入门学习做了记录,...

与阳光共进早餐
2018/01/15
0
0
10分钟快速入门PyTorch (0)

之前有很多小伙伴私信我说文章思想能看懂,但是pytorch的部分因为没有看过pytorch教程所以一脸懵逼。对此我也表示很无奈,既然大家不愿意去官网看教程,那么我就将我学习pytorch的经验写出来...

SherlockLiao
2017/05/11
0
0
PyTorch 60 分钟入门教程

PyTorch 60 分钟入门教程:PyTorch 深度学习官方入门中文教程 http://pytorchchina.com/2018/06/25/what-is-pytorch/ PyTorch 60 分钟入门教程:自动微分 http://pytorchchina.com/2018/12/...

不知道自己是谁
2018/12/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
4
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部