本文记录笔者在学习Pytorch过程中对tensor数据类型的整理和相关记录
Tensor一词,在英文中指的是张肌,即一种肌肉纤维,在神经网络学习中,中文在很多文章中,通常将其称作张量
要学习Tensor数据类型,我们先要搞清楚Tensor数据类型是什么,这里列出了一句官方文档给出的解释
A torch.Tensor is a multi-dimensional matrix containing elements of a single data type.
从这句话中不难看出,Tensor是一种矩阵数据类型,内部携带简单数据类型
Pytorch的官方文档中给出了许多Tensor的数据类型,我们这里关注到32位的FloatTensor以及16位HalfTensor,前者在开发过程中使用频率较高,后者在GPU显存占用上具有独到的优势
通常情况下,Tensor会根据初始化时传入的数据类型确定具体是哪种Tensor, 但我们也可以通过
import torch
a = torch.FloatTensor(2,3)
b = torch.FloatTensor([2,3,4,5])
a,b
import torch
a = torch.IntTensor(2,3)
b = torch.IntTensor([2,3,4,5])
a,b
randomTensor=torch.rand(2,3,dtype=torch.float)
print(randomTensor)
我们可以通过传入Python的list列表和Numpy的nparray对一个Tensor数据类型进行初始化
import numpy as np
import torch
floatTensor = torch.tensor([[1., -1.], [1., -1.]])
print(floatTensor)
npTensor = torch.tensor(np.array([[1, 2, 3], [4, 5, 6]]))
print(npTensor)
前文中已经列举了FloatTensor和IntTensor两种数据类型的初始化,这里就不进行赘述了
返回一个张量,包含了从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数。张量的形状由参数sizes定义。
randomTensor=torch.randn(2,3,dtype=torch.float)
print(randomTensor)
返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数。张量的形状由参数sizes定义。
randomTensor=torch.rand(2,3,dtype=torch.float)
print(randomTensor)
返回一个张量,zeros表示张量内全部都为0,ones表示张量内全部为1,empty则是生成一个张量,内部元素全部为空,只生成其大小
Numpy和Tensor相比较,他们的区别主要有以下两点
需要注意的是,Tensor内部的数据类型为ndarray,而当运行在GPU上时,GPU不具有更改元素值的能力,所以Tensor内部元素的数值不可改变
持续更新和完善中,欢迎大佬指正