基于PyTorch的深度学习入门教程(二)——简单知识
2017-12-11 06:35
711 查看
前言
本文参考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:
from __future__ import print_function
import 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 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
本文参考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:
from __future__ import print_function
import 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 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
相关文章推荐
- 基于PyTorch的深度学习入门教程(四)——构建神经网络
- Caffe 深度学习入门教程 运行caffe自带的两个简单例子
- Caffe 深度学习入门教程 运行caffe自带的两个简单例子
- Caffe 深度学习入门教程 运行caffe自带的两个简单例子
- 深度学习tensorflow 入门教程 3
- TensorFlow和深度学习入门教程(TensorFlow and deep learning without a PhD)
- 深度学习-2:tensorflow 入门以及简单的线性拟合
- 深度学习简单知识
- ibatis学习之道:iBatis简单入门教程
- 基于PyTorch的深度学习入门教程(三)——自动梯度
- 深度学习FPGA实现基础知识8(Deep Learning(深度学习)Matlab实现--简单清晰的实验)
- 基于PyTorch的深度学习入门教程(八)——图像风格迁移
- 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening
- 深度学习国外经典教程——大师带你入门(视频、PPT讲稿)
- bc94 老司机学习MyBatis教程之MyBatis基础篇简单入门HelloWorld
- Caffe 深度学习入门教程 Blob,Layer and Net以及对应配置文件的编写
- 深度学习/机器学习入门基础数学知识整理(三):凸优化,Hessian,牛顿法
- 基于PyTorch的深度学习入门教程(五)——训练神经网络分类器
- 深度学习入门知识汇总
- SpeedPHP学习教程第一篇——(Helloworld的开始及简单入门)(原创连载二)