深度学习基础知识1(数据操作)

数据操作

当您需要某种方式来存储和操作数据时

(1)获取数据;

(2)将数据读入计算机后对其进行处理。 如果没有某种方法来存储数据,那么获取数据是没有意义的。

1.张量 tensor

n维数组,也称为张量(tensor)

张量表示由一个数值组成的数组,这个数组可能有多个维度。 具有一个轴的张量对应数学上的向量(vector); 具有两个轴的张量对应数学上的矩阵(matrix); 具有两个轴以上的张量没有特殊的数学名称。

无论使用哪个深度学习框架,它的张量类(在MXNet中为ndarray, 在PyTorch和TensorFlow中为Tensor)都与Numpy的ndarray类似。 但深度学习框架又比Numpy的ndarray多一些重要功能:

  • GPU很好地支持加速计算,而numpy仅支持CPU计算
  • 张量类支持自动微分。这些特性让张量类更适合深度学习
  • N维数组是机器学习和神经网络的主要数据结构
    1.0 可以表示一个类别 0d标量(维)
    [1.0 , 2.2 , 5.6] 可以表示一个特征向量 1d向量
    [ [1.0 , 2.5 , 3.3]
    [5.0 , 6.5 , 8.8]
    [4.1 , 3.2 , 2.1] ] 可以表示一个样本—特征矩阵 2d矩阵
    上图是个3维请添加图片描述
    下图是一个四维
    请添加图片描述
    然后是5维
    深度学习基础知识1(数据操作)

然后添加访问元素的知识
请添加图片描述

首先,导入torch库

import torch  #注:虽然它被称为PyTorch,但是代码中使用torch而不是pytorch。

首先,用arange创建一个行向量x。这个行向量包含以0开始的前12个整数,它们默认创建为整数。也可指定创建类型为浮点数。

张量中的每个值都称为张量的元素(element)。例如,张量x中有 12 个元素。除非额外指定,新的张量将存储在内存中,并采用基于CPU的计算。

x = torch.arange(12)
x

tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])

x.shape  #可以通过张量的shape属性来访问张量(沿每个轴的长度)的形状

torch.Size([12])

x.numel()  #如果只想知道张量中元素的总数,即形状的所有元素乘积,可以检查它的大小(size)。 因为这里在处理的是一个向量,所以它的`shape`与它的`size`相同。

12

需要注意的是,虽然张量的形状发生了变化,但它的元素值没有变化。注意:通过改变张量的形状,张量的大小不会改变。

X = x.reshape(3, 4)   #要想改变一个张量的形状而不改变元素数量和元素值,可以调用reshape函数
X          #3表示3行,4表示4列

tensor([[ 0, 1, 2, 3],

​ [ 4, 5, 6, 7],

​ [ 8, 9, 10, 11]])

我们不需要通过手动指定每个维度来改变形状。 也就是说,如果我们的目标形状是(高度,宽度), 那么在知道宽度后,高度会被自动计算得出,不必我们自己做除法。 在上面的例子中,为了获得一个3行的矩阵,我们手动指定了它有3行和4列。我们可以通过-1来调用此自动计算出维度的功能。

即用x.reshape(-1,4)x.reshape(3,-1)代替x.reshape(3,4)

有时,我们希望[使用全0、全1、其他常量,或者从特定分布中随机采样的数字]来初始化矩阵。 我们可以创建一个形状为(2,3,4)的张量,其中所有元素都设置为0。

torch.zeros((2, 3, 4))   #输出结果与torch.zeros(2, 3, 4)相同

tensor([[[0., 0., 0., 0.],

​ [0., 0., 0., 0.],

​ [0., 0., 0., 0.]],

​ [[0., 0., 0., 0.],

​ [0., 0., 0., 0.],

​ [0., 0., 0., 0.]]])

torch.ones((2, 3, 4))  #同样,创建一个形状为(2,3,4)的张量,其中所有元素都设置为1。

tensor([[[1., 1., 1., 1.],

​ [1., 1., 1., 1.],

​ [1., 1., 1., 1.]],

​ [[1., 1., 1., 1.],

​ [1., 1., 1., 1.],

​ [1., 1., 1., 1.]]])

torch.tensor([[2,1,4,3],[1,2,3,4],[4,3,2,1]])# 通过提供包含数值的python列表(或嵌套列表)来为所需张量中的每个元素赋予确定值          在这里,最外层的列表对应于轴0,内层的列表对应于轴1。

tensor([[2, 1, 4, 3],

​ [1, 2, 3, 4],

​ [4, 3, 2, 1]])

如果你想通过从某个概率分布中随机抽样得到张量中每个元素的值:

例如,在神经网络中构造数组作为参数时,参数的值通常是随机初始化的。

torch.randn(3, 4)#创建一个形状为(3,4)的张量。 其中的每个元素都从均值为0、标准差为1的标准高斯分布(正态分布)中随机采样。

tensor([[-1.3892, 0.8798, 1.4524, -1.6398],

​ [ 1.0966, -0.1747, -1.0172, 0.1303],

​ [-2.5304, -0.2358, -1.2232, -1.2402]])

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2022年3月24日 下午2:32
下一篇 2022年3月24日 下午2:50

相关推荐