PyTorch快速入门教程一(环境配置与pytorch基础)

Song • 6226 次浏览 • 0 个回复 • 2017年06月18日

接下来我们将进入Pytorch快速入门系列教程,本系列主要参考深度炼丹的知乎专栏10分钟快速入门PyTorch,并且已经获得了作者的许可转载,同时文章会有较多改动,我将会以一个新手的视角带大家学习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中文网
原文出处: https://ptorch.com/news/5.html
问题交流群 :168117787
提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
Pytorch是什么?关于Pytorch! PyTorch快速入门教程二(线性回归以及logistic回归)