pytorch--初识张量与常见基础函数(1)

目录

张量的定义

张量的概念

访问元素

张量常用数据类型

张量的创建及其数据类型转换

张量的简单创建

张量的数据类型转换

常用的基础函数



张量的定义

张量的概念

        张量(Tensor)是Pytorch、TensorFlow等深度学习框架的基础运算单位,与python中Numpy工具包的ndarray类似。不同的是GPU可以很好地支持加速计算,而Numpy仅支持CPU计算,这样可以哒哒地加快运算速度。张量为包含单一数据类型的元素的多维矩阵(没有轴只有大小的标量可以视为零阶张量,有一个轴既有大小又有方向的矢量可以视为一阶张量,有两个轴的矩阵可以视为二阶张量,具有两个轴以上的张量没有特殊的数学名称)。

pytorch--初识张量与常见基础函数(1)_第1张图片

pytorch--初识张量与常见基础函数(1)_第2张图片

访问元素

pytorch--初识张量与常见基础函数(1)_第3张图片

 pytorch--初识张量与常见基础函数(1)_第4张图片

张量常用数据类型

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]]])

待更!

你可能感兴趣的:(动手学深度学习,pytorch,深度学习,python)