Tensor概念及基本操作
概念
tensor是pytorch最基本的操作对象,表示的是一个多维的矩阵,核心是一个数据容器,可以将其想象成一个数字的水桶(多数情况下,它包含数字,有时候它也包含字符串,但是这种情况比较少)
Numpy与Tensor
- 原因:tensor与numpy相对应,可与numpy的ndarray相互转换。tensor可以轻易地进行卷积,激活,上下采样,微分求导等操作,而numpy数组就不行,普通的数组要先转化为tensor格式才行。
- 对比:相同:tensor内部的数据类型为ndarry类型。
区别:1.tensor可以有加速器内存(如GPU)支持,既可以在CPU上运行也可以在GPU上运行,ndarray只能在CPU上运行;2.ndarray在CPU上运行,因此可以改变其数值;tensor的值可以驻留在GPU上加速,GPU不具有改变元素值的能力,因此tensor的值不可以改变。
Tensor的维度、形状和意义
- 维度
维度看tensor最左边中括号的个数,若有n个,则tensor为n维度的张量。 - 形状
张量的第一个形状要看最外面的中括号中包含了多少元素,若有n个元素,则形状的第一个元素为n1;同理,形状的第二个维度需要看第二个中括号里面包含了几个元素,若包含n2个元素,形状的第二个元素为n2. - 意义
对于一维的张量表示行或列向量
对于二维的张量[n,m]表示n行m列的矩阵
对于三维的张量[p,n,m]表示p个切片,每个切片为n行m列的矩阵
对于四维以后的张量不知道怎么解释了…
1 # 形状为[]
[1,2,3] # 形状为[3]
[[1,2],[3,4]] # 形状为[2,2]
[[[1,2],[3,4]],[[1,2],[3,4]]] # 形状为[2,2,2]
基本操作
tensor的创建
# 根据数据直接创建
torch.tensor([2, -3.4])