基于PyTorch的深度学习入门教程之PyTorch简单知识

电子说

1.3w人已加入

描述

  本文参考PyTorch官网的教程,分为五个基本模块来介绍PyTorch。为了避免文章过长,这五个模块分别在五篇博文中介绍。

  Part1:PyTorch简单知识

  Part2:PyTorch的自动梯度计算

  Part3:使用PyTorch构建一个神经网络

  Part4:训练一个神经网络分类器

  Part5:数据并行化

  本文是关于Part1的内容。

  Part1:PyTorch简单知识

  PyTorch是一个基于Python的科学计算框架,用于进行深度学习相关研究。对于Python语言的入门,可以参考之前的两篇介绍Python&Numpy的博客。分别是Python& Numpy 教程(上) 和Python & Numpy 教程(下)。这里我们就直接介绍PyTorch中的基本操作。

  1 Tensors

  Tensors与numpy中的ndarray类似,但是Tensors支持GPU运算。首先来做一些简单的例子。

  导入基本的package:


		

  构建一个5*3的未初始化的矩阵:

x = torch.Tensor(5, 3)
print(x)

  构建一个随机初始化矩阵:

x = torch.rand(5, 3)
print(x)

  获取矩阵的size:

print(x.size())

  注意,torch.Size实际上是一个tuple,所以它支持相同的运算。

  2 运算(Operations)

  运算可以使用多种语法表示,我们以加法为例子来说明。

  加法:语法1

y = torch.rand(5, 3)
print(x + y)

  加法:语法2

print(torch.add(x, y))

  加法:给定输出的tensor

result = torch.Tensor(5, 3)
torch.add(x, y, out=result)
print(result)

  加法:原地进行(in-place)的加法

# adds x to y
y.add_(x)
print(y)

  注意,任何原地改变tensor的运算后边会后缀一个“_”,例如:x.copy_(y),x.t_(),会改变x的值。

  你可以使用标准的numpy方式的索引。

print(x[:, 1])

  3 NumpyBridge

  将torch的Tensor转换为numpy的array,反之亦然。

  torch的Tensor和numpy的array分享底层的内存地址,所以改变其中一个就会改变另一个。

  将torch Tensor转换为numpy array

a = torch.ones(5)
print(a)
b = a.numpy()
print(b)

  观察numpy array的值怎样改变。

a.add_(1)
print(a)
print(b)

  将numpy array 转换为torch Tensor

  看一下改变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)

  CPU上的所有Tensors(除了CharTensor)支持到Numpy的双向转换。

  4 CUDA Tensors

  通过使用 .cuda 函数,Tensors可以被移动到GPU。

# let us run this cell only if CUDA is available
if torch.cuda.is_available():
    x = x.cuda()
    y = y.cuda()
    x + y

  责任编辑:xj

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分