PyTorch入门(一)--PyTorch基础
程序员文章站
2022-07-06 12:38:11
...
1. PyTorch与TensorFlow的区别
PyTorch和TensorFlow的底层都是由C++编写的, 所以运行起来都比较快,那么二者的区别是什么呢?以一个基本的运算为例:
a = x*y;
b = a + z;
c = ∑(b);
该运算的运算图为:
TensorFlow的实现代码为:
PyTorch的实现代码为:
二者最大的区别是:
- TensorFlow是先生成静态运算图,然后在进行运算,而且运算图是静态的,一经生成无法更改。
- PyTorch生成的运算图是动态的,可以一边生成动态运算图,一边进行运算
详细的区别入下图所示:
2. PyTorch基本数学形式
神经网络最核心的部分就是数学运算,在PyTorch中最基本的数学形式有三个:
- 向量(Vector): 一列数
- 矩阵(Matrix): “二维向量”
- 张量(Tensor): “三维向量”或者“三维矩阵”
神经网络的核心部分是向量、矩阵、张量之间的相乘与相加。
在PyTorch中生成三种数学形式的代码如下所示:
# 导入torch包
import torch
#定义向量
vector = torch.tensor([1,2,3,4])
#定义矩阵
matrix = torch.tensor([[1,2],[3,4]])
#定义张量
tensor = torch.tensor([[[1,2],[3,4]],[[1,2],[3,4]]])
3. 关于Tensor
Tensor是PyTorch中重要的数据结构,可认为是一个高维数组。Tensor和numpy的ndarrays类似,但是Tensor可以使用GPU加速。需要注意的是,Tensor和numpy对象共享内存,所以他们之间的转换很快,而且几乎不会消耗资源。这意味着,如果其中一个变了,另外一个也会随之改变。
PyTorch中新建的Tensor方法有很多,具体为:
Tensor有不同的数据类型,如下表所示:
对于tensor的常用逐元素操作如下表所示:
对于tensor的常用归并操作如下表所示:
上一篇: Linux下使用VS Code + CMake 调试c++程序
下一篇: Pytorch—入门篇