栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

学习沐神课程 自用深度学习笔记02 线性代数

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习沐神课程 自用深度学习笔记02 线性代数

线性代数

具体实现
  1. 标量

    import torch
    
    x = torch.tensor(3.0)  # 由一个元素3组成的张量
    y = torch.tensor(2.0)  # 由一个元素4组成的张量
    
    x + y, x * y, x / y, x**y  # 标量可以进行基本运算
    

    result:

    (tensor(5.), tensor(6.), tensor(1.5000), tensor(9.))
    
  2. 向量

    通过张量的索引来访问任意元素

    x = torch.arange(4)  # x = [0, 1, 2, 3]
    X = x[3]  # X = 3 注意下标从0开始
    length = len(x)  # length = 4 访问张量的长度
    print(x.shape)  # torch.Size([4]) 访问张量形状 n维张量的形状为 torch.Size([l1, l2, l3, ..., ln]), l为对应维度的长度
    

    创建二维矩阵:

    A = torch. arange(20).reshape(5, 4)  # 创建5*4的矩阵
    B = A.T # 矩阵转置
    

    对称矩阵:转置为矩阵本身

    A == A.T  # 判断是否为对称矩阵
    

    创建更多维矩阵:

    X = torch.arange(24).reshape(2, 3, 4)  # 三维矩阵 2块3行4列
    

    X的值:

    tensor([[[ 0,  1,  2,  3],
             [ 4,  5,  6,  7],
             [ 8,  9, 10, 11]],
    
            [[12, 13, 14, 15],
             [16, 17, 18, 19],
             [20, 21, 22, 23]]])
    
  3. 两个相同张量的运算

    A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
    B = A.clone()  # 通过分配新内存,将A的一个副本分配给B
    """
    需要注意的是,直接使用赋值语句B = A的话 两者实质上还是指向同一张量,任何对其中一方所做的改变都会影响到另一方
    """
    A * B  # 按对应位置元素分别相乘
    A.sum()  # 张量求和 对每个元素求和 返回标量
    #  sum()函数可以接受一个参数 axis 通过指定axis的值决定张量沿哪一个轴求和 axis=[求和维度]
    A.mean()  # 对张量求平均值 同样可以接受axis按某一维度计算
    sum_A = A.sum(axis=1, keepdims=True)  
    # 沿轴0计算A元素的累计总和 cumsum函数不会降低维度
    A.cumsum(axis=0)  
    

    ​ keepdims可以在计算时使轴数保持不变 即不会降维,axis对应的轴长度会被设置为1.用途是在使用广播机制时保持了相同的维度可以进行A/sum_A操作.

  4. 向量点积

    y = torch.ones(4, dtype = torch.float32)
    x = torch.ones(4, dtype = torch.float32)
    # 结果: tensor((4.)) 注意到dot函数只能接受一维tensor
    torch.dot(x, y)
    
  5. 矩阵-向量积

    注意到,A的列维数(沿轴1 的长度)必须与向量x的长度相同

    A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
    x = torch.arange(4, dtype=torch.float32)
    print(A.shape, x.shape, torch.mv(A, x)) 
    

    result:

    (torch.Size([5, 4]), torch.Size([4]), tensor([ 14.,  38.,  62.,  86., 110.]))
    
  6. 矩阵乘法

    B = torch.ones(4, 3)
    torch.mm(A, B)
    
  7. L 2 范 数 L_2范数 L2​范数 {$}

    u = torch.tensor([3.0, -4.0]) 
    torch.norm(u)  # norm()函数提供了求L2范数的情况
    torch.abs(u).sum()  # 简单的求L1范数的情况
    

    u = torch.tensor([3.0, -4.0])
    torch.norm(u) # norm()函数提供了求L2范数的情况
    torch.abs(u).sum() # 简单的求L1范数的情况

    
    
    
    
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号