目录
张量的定义
张量的概念
访问元素
张量常用数据类型
张量的创建及其数据类型转换
张量的简单创建
张量的数据类型转换
常用的基础函数
张量(Tensor)是Pytorch、TensorFlow等深度学习框架的基础运算单位,与python中Numpy工具包的ndarray类似。不同的是GPU可以很好地支持加速计算,而Numpy仅支持CPU计算,这样可以哒哒地加快运算速度。张量为包含单一数据类型的元素的多维矩阵(没有轴只有大小的标量可以视为零阶张量,有一个轴既有大小又有方向的矢量可以视为一阶张量,有两个轴的矩阵可以视为二阶张量,具有两个轴以上的张量没有特殊的数学名称)。
Tensor在Pytorch中常用的基本数据类型:
torch.FloatTensor #Tensor默认数据类型32位浮点型
torch.DoubleTensor #64位浮点型
torch.LongTensor #64位整型
torch.IntTensor #32位整型
torch.ShortTensor #16位整型不常用数据类型:
torch.BoolTensor #布尔类型
torch.ByteTensor #byte类型
torch.HalfTensor #半精度浮点类型
torch.CharTensor #char类型
torch.tensor---只创建torch.FloatTensor类型的张量(可以说是torch.empty的特例)
常用参数
data :张量的初始数据,可以是列表、元组、numpy.ndarray、标量等类型
dtype :返回张量所需数据类型,默认值为None,推断data数据类型
device :返回张量的所需设备,默认值为None,使用当前设备作为默认张量类型。(cpu/gpu)
a = torch.tensor([[0.1, 1.2], [2.2, 3.1], [4.9, 5.2]])
a: tensor([[0.1000, 1.2000],
[2.2000, 3.1000],
[4.9000, 5.2000]])
a.dtype: torch.float32
a.device: cpu
b = torch.tensor([[0.11111, 0.222222, 0.3333333]],
dtype=torch.float64,
device=torch.device('cuda:0')
)
tensor([[0.1111, 0.2222, 0.3333]], device='cuda:0', dtype=torch.float64)
torch.empty()---创建任意数据类型的张量
常用参数
size :定义tensor的shape
dtype:指定返回tensor的数据类型
out : 把A张量赋给该张量,具体请看下面demo
a = torch.empty([3, 4], dtype=torch.int8)
输出(每次输出均不同):
tensor([[ 0, 109, -31, -90],
[ 60, 2, 0, 0],
[-128, 72, 43, 114]], dtype=torch.int8)
demo1:
a = torch.ones(3,4)
print(a)
b = torch.empty([4,4],out=a)
print(b, '\n', a)
out会把前面已创建的张量元素赋值给该张量,并使之前张量变为该张量。
tensor([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
tensor([[1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00],
[1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00],
[1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00],
[8.9082e-39, 8.9082e-39, 9.1837e-39, 1.0653e-38]])
tensor([[1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00],
[1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00],
[1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00],
[8.9082e-39, 8.9082e-39, 9.1837e-39, 1.0653e-38]])
tensor.type()(XXXXTensor去掉Tensor)
例如:tensor.long()
把默认floattensor转换为longtensor
tensor = torch.randn(2,2)
# torch.long() 将tensor转换为long类型
long_tensor = tensor.long()
torch.FloatTensor
torch.LongTensor
torch.numel()---返回张量中元素的个数
参数
input :输入张量
a = torch.randn(1, 2, 3, 4, 5)#返回填充正态分布中随机数的五维张量
torch.numel(a) #返回张量中元素的数量
120
b = torch.zeros(4,4) #创建一个4*4的零矩阵
torch.numel(b) #返回张量中元素的数量
16
torch.randn()---从均值为0方差为1的正态分布(标准正态分布)中返回一个填充随机数的张量。
常用参数
size :定义输出张量形状的整数序列。可以是可变数量的参数或像列表或元组这样的集合。
torch.randn(4)
tensor([-0.8278, 0.5125, -0.5062, -0.5426])
torch.randn(2,3)
tensor([[ 0.2056, 0.3492, -0.0945],
[ 0.0401, -0.1669, 1.2944]])
torch.randn(2,3,4)
tensor([[[-0.4541, -0.8035, 1.0739, 0.4186],
[-0.6344, -0.9139, -0.1677, 0.0961],
[-0.7515, -0.6628, 1.6266, 1.1239]],
[[ 1.3485, 0.4935, 0.8326, -0.1125],
[-0.4228, 0.4704, -2.5847, -0.1034],
[ 0.2142, -0.2088, -0.0864, -1.1074]]])
待更!