本文是关于Part1的内容。
Part1:PyTorch简单知识 PyTorch是一个基于Python的科学计算框架,用于进行深度学习相关研究。对于Python语言的入门,可以参考之前的两篇介绍Python&Numpy的博客。分别是Python& Numpy 教程(上) 和Python & Numpy 教程(下)。这里我们就直接介绍PyTorch中的基本操作。 1 Tensors Tensors与numpy中的ndarray类似,但是Tensors支持GPU运算。首先来做一些简单的例子。 导入基本的package: from __future__ import print_functionimport torch
构建一个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 yy.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 npa = 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 availableif torch.cuda.is_available(): x = x.cuda() y = y.cuda() x + y
|