• 人工智能之PyTorch数据操作-Python版


    PyTorch数据操作

    1. # 导入PyTorch
    2. import torch

    [张量表示一个由数值组成的数组,这个数组可能有多个维度]。

    具有一个轴的张量对应数学上的向量(); 具有两个轴的张量对应数学上的矩阵matrix); 具有两个轴以上的张量没有特殊的数学名称。

    首先,我们可以使用 arange 创建一个行向量 x。这个行向量包含以0开始的前12个整数,它们默认创建为整数。也可指定创建类型为浮点数。张量中的每个值都称为张量的 元素(element)。例如,张量 x 中有 12 个元素。除非额外指定,新的张量将存储在内存中,并采用基于CPU的计算。

    1. x = torch.arange(15)
    2. x
    3. #:tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14])

    [可以通过张量的shape属性来访问张量(沿每个轴的长度)的*形状*] (和张量中元素的总数)。

    1. x.shape
    2. #:torch.Size([15])

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

    1. x.numel()
    2. #:15

    [要想改变一个张量的形状而不改变元素数量和元素值,可以调用reshape函数。] 例如,可以把张量x从形状为(12,)的行向量转换为形状为(3,4)的矩阵。 这个新的张量包含与转换前相同的值,但是它被看成一个3行4列的矩阵。 要重点说明一下,虽然张量的形状发生了改变,但其元素值并没有变。 注意,通过改变张量的形状,张量的大小不会改变。

    1. X = x.reshape(3,5)
    2. X
    3. #:
    4. tensor([[ 0,  1,  2,  3,  4],
    5.       [ 5,  6,  7,  8,  9],
    6.       [10, 11, 12, 13, 14]])

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

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

    1. torch.zeros((2,3,4))
    2. #:
    3. tensor([[[0., 0., 0., 0.],
    4.         [0., 0., 0., 0.],
    5.         [0., 0., 0., 0.]],
    6.       [[0., 0., 0., 0.],
    7.         [0., 0., 0., 0.],
    8.         [0., 0., 0., 0.]]])

    同样,我们可以创建一个形状为(2,3,4)的张量,其中所有元素都设置为1。代码如下:

    torch.ones((2,3,4))
    
                    
  • 相关阅读:
    大模型在数据分析场景下的能力评测
    压缩算法:基于FPGA的Varint编码实现(附代码)
    【实习小tip】el-form设置label文字宽度、设置el-label和el-input等高、服务器端(接口)方式URL Scheme获取
    机器学习总结(一)——回归问题概述
    HTML5离线储存
    华为云云耀云服务器L实例评测|使用Linux系统与Docker部署.net/c#项目
    有关神经网络的训练算法,神经网络算法通俗解释
    阿里云云原生一体化数仓 — 离线实时一体化新能力解读
    Azure Data Factory(七)数据集验证之用户托管凭证
    【分布式】高并发下如何防重?
  • 原文地址:https://blog.csdn.net/weixin_43227851/article/details/133944605