• 向量矩阵范数pytorch


    范数是向量或矩阵的长度
    矩阵的长度 模
    二范数是什么
    二范数(L2 norm)是一种常见的数学概念,它表示一个向量的模长。在数学中,一个向量的二范数定义为其元素平方和的平方根,即:

    矩阵按照某个维度求和(dim就是shape数组的下标)

    求和不降维,就keepdims=True
    降维求和
    axis的值对应着shape的下标
    在这里插入图片描述

    1. torch

    1.1 Tensors一些常用函数

    1.1.2 Indexing, Slicing, Joining, Mutating Ops

    1. concat():和cat()功能相同
    2. cat(tensors, dim=0, *, out=None)串接tensors(一串Tensor,非空Tensor在非dim维度必须形状相同),返回结果
    3. reshape(input, shape)
    4. squeeze(input, dim=None, *, out=None)
      去掉input(Tensor)中长度为1的维度,返回这个Tensor。如果有dim就只对指定维度进行squeeze操作。
      返回值与input共享储存空间。

    squeeze()函数的功能是维度压缩。返回一个tensor(张量),其中 input 中大小为1的所有维都已删除。

    举个例子:如果 input 的形状为 (A×1×B×C×1×D),那么返回的tensor的形状则为 (A×B×C×D)

    当给定 dim 时,那么只在给定的维度(dimension)上进行压缩操作。
    举个例子:如果 input 的形状为 (A×1×B),squeeze(input, 0)后,返回的tensor不变;squeeze(input, 1)后,返回的tensor将被压缩为 (A×B)

    原文链接:https://blog.csdn.net/qq_40305043/article/details/107767652

    import torch
    
    x = torch.zeros(2, 1, 2, 1, 2)
    print(x.size()) #torch.Size([2, 1, 2, 1, 2])
    y = torch.squeeze(x)
    print(y.size())  # torch.Size([2, 2, 2])
    y = torch.squeeze(x, 0)
    print(y.size())# torch.Size([2, 1, 2, 1, 2])
    y = torch.squeeze(x, 1)  # torch.Size([2, 2, 1, 2])
    print(y.size())
    y = torch.squeeze(x, 3)  # torch.Size([2, 1, 2, 2])
    print(y.size())
    y = torch.squeeze(x, [1, 3])  # torch.Size([2, 2, 2])
    print(y.size())
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    1. unsqueeze(input, dim)
      在input指定维度插入一个长度为1的维度,返回Tensor
    import torch
    
    x = torch.tensor([1, 2, 3, 4])  #
    y = torch.unsqueeze(x, 0)  # 在第0维扩展,第0维为1
    z = torch.unsqueeze(x, 1)  # 在第1维扩展,第1维为1
    print(x, x.shape)
    print(y, y.shape)
    print(z, z.shape)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    tensor([1, 2, 3, 4]) torch.Size([4])
    tensor([[1, 2, 3, 4]]) torch.Size([1, 4])
    tensor([[1],
            [2],
            [3],
            [4]]) torch.Size([4, 1])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. t(input)
      零维和一维input不变,二维input转置(等如transpose(input, 0, 1)),返回结果
      在这里插入图片描述
    2. transpose(input, dim0, dim1)
      返回input转置的Tensor,dim0和dim1交换。
      返回值与input共享储存空间。
    >>> x = torch.randn(2, 3)
    >>> x
    tensor([[ 1.0028, -0.9893,  0.5809],
            [-0.1669,  0.7299,  0.4942]])
    >>> torch.transpose(x, 0, 1)
    tensor([[ 1.0028, -0.1669],
            [-0.9893,  0.7299],
            [ 0.5809,  0.4942]])
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    一些安装问题

    pip install d2l==0.17.5
    安装不了

    cd进不去不去目录

    安装d2l的时候,先下载cd到下载到的目录进行安装,发现经不去目录
    cd /d 命令与普通的 cd 命令不同,它允许你不仅改变目录,还可以改变驱动器

    cd /d D:\python\Anacond_Folder\envs\d2l
    pip install d2l-0.15.1-py3-none-any.whl
    
    • 1
    • 2

    %matplotlib inline 是 Jupyter Notebook 或 JupyterLab 中的一个魔术命令,用于在 Notebook 中显示 matplotlib 图形的输出。

    import random 导入了 Python 的 random 模块,用于生成随机数。

    import torch 导入了 PyTorch 库,用于深度学习任务。

    from d2l import torch as d2l 导入了 d2l 模块,并将其重命名为 d2l。d2l 是 Dive into Deep Learning (D2L) 图书的一个开源教学库,用于深度学习的代码实现和示例

    PyTorch里面_表示重写内容

    在默认情况下,PyTorch会累积梯度,我们需要清除之前的值

    x.grad.zero_()
    y = x.sum()
    y.backward()
    x.grad

    很少对向量函数求导,求导结果理论上来说是一个矩阵

    实现某些网络,把参数固定住的时候比较有用

  • 相关阅读:
    想让你的工作轻松高效吗?揭秘Java + React导出Excel/PDF的绝妙技巧!
    rust多个mod文件引用和文件夹mod使用注意事项
    深度学习机器学习面试题——自然语言处理NLP,transformer,BERT,RNN,LSTM
    React 知识点:基础语法、组件、React-Router、Redux
    求二叉树的高度——函数递归的思想
    第二章 进程与线程 十三、进程互斥的软件实现方法(单标志法、双标志先检查、双标志后检查、Peterson算法)
    “CleaningStaffServices“ app Tech Support(URL)
    Mini Linux嵌入式设备服务器
    【CNN】MobileNet——卷积神经网络中轻量级的经典
    CentOS下的miniconda3安装
  • 原文地址:https://blog.csdn.net/qq_51070956/article/details/134252414