• 人工智能之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))
    
                    
  • 相关阅读:
    2022起重机司机(限桥式起重机)题库及答案
    【Android Framework系列】第15章 Fragment+ViewPager与Viewpager2相关原理
    智能指针与定制删除器
    c#调用CUDA执行YOLOV5对象检测
    【leetcode】二分刷题=>704、35
    Typora最强替代神器Marktext
    uniapp自定义权限菜单,动态tabbar
    HTML+CSS期末大作业 中国传统美食网站设计 节日美食13页 html5网页设计作业代码 html制作网页案例代码 html大作业网页代码
    大数据时代,网络安全人员的钱途在哪里?
    ChatGPT API 学习
  • 原文地址:https://blog.csdn.net/weixin_43227851/article/details/133944605