博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyTorch快速入门教程一(环境配置)
阅读量:6564 次
发布时间:2019-06-24

本文共 2611 字,大约阅读时间需要 8 分钟。

  hot3.png

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

环境配置

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

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

pytorch基础

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

Tensor

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

# -*- coding: utf-8 -*-import torcha = 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 torcha = torch.Tensor(3,3)print a.size()

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

# -*- coding: utf-8 -*-import torcha = torch.Tensor(3,3)print a.size()

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

Variable

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

# -*- coding: utf-8 -*-import torcha = 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 npimport torchfrom torch.autograd import Variableimport torch.nn as nnimport torch.nn.functional as F# requires_grad 表示是否对其求梯度,默认是Truex = 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))

输出

Nonedz/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 npimport torchfrom torch.autograd import Variableimport torch.nn as nnimport 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/

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

 

转载于:https://my.oschina.net/earnp/blog/1113888

你可能感兴趣的文章
SpringCloud注册中心环境搭建euraka
查看>>
各类文件的文件头标志
查看>>
第四周作业——在你的实际项目旅游网站中,网页主页面主要有哪些模块?
查看>>
基于django的个人博客网站建立(一)
查看>>
ElasticSearch 安装使用
查看>>
使用nodejs创建加入用户验证的websocket服务
查看>>
反思最近这些时日的荒废
查看>>
磁盘管理
查看>>
Loop,Handler,Message的源码解析
查看>>
React性能分析利器来了,妈妈再也不用担心我的React应用慢了(转)
查看>>
Java字节流与字符操作小结
查看>>
linux学习
查看>>
[CTSC2010]珠宝商 SAM+后缀树+点分治
查看>>
[SDOI2016]储能表——数位DP
查看>>
女神(goddess)——组合数学
查看>>
UIImage保存到沙盒
查看>>
Linux的50个基本命令
查看>>
std::map 的swap错用
查看>>
钓鱼网站-现代网络“李鬼”
查看>>
mac/Linux源码安装TensorFlow
查看>>