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

线性代数沐神的ppt请添加图片描述

请添加图片描述

具体实现

  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范数的情况

    
    
    
    
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值