Pytorch API

  1. torch.squeeze(input, dim=None)

    将给定的 input 这个 tensor 中,大小为 1 的 dim 全部压缩。

    如下例子:

    py 复制代码
    import torch
    t = torch.tensor([[1], [2], [3]])
    print(t) # tensor([[1], [2], [3]]) shape=(3,1)
    
    t = torch.squeeze(t)
    print(t) # tensor([1, 2, 3]) shape=(3,)
  2. torch.unsqueeze(input, dim)

    将给定的 input 这个 tensor 中,指定的 dim 扩充一维

    如下例子:

    py 复制代码
    import torch
    t = torch.tensor([1, 2, 3])
    print(torch.unsqueeze(t, 0)) # tensor([[1, 2, 3]]) shape=(1,3)
    
    print(torch.unsqueeze(t, 1)) # tensor([[1], [2], [3]]) shape=(3,1)
  3. torch.index_select(input, dim, index, *, out=None)

    在给定的 input 这个 tensor 中,选择维度 dim ,然后在这个维度中选择索引 index 的部分返回。

    如下例子:

    py 复制代码
    import torch
    
    t = torch.arange(1, 13).view(3, 4)
    	
    print(t)
    """
    tensor([[ 1,  2,  3,  4],
            [ 5,  6,  7,  8],
            [ 9, 10, 11, 12]])
    shape=(3, 4)
    """
    
    indices = torch.tensor([0, 2])
    
    print(torch.index_select(t, 0, indices))
    """
    tensor([[ 1,  2,  3,  4],
            [ 9, 10, 11, 12]])
    选择 dim=0 ,有 (0, 1, 2) 三个,选择第 0 行和第 2 行
    """
    
    print(torch.index_select(t, 1, indices))
    """
    tensor([[ 1,  3],
            [ 5,  7],
            [ 9, 11]])
    选择 dim=1 ,有 (0, 1, 2, 3) 四个,选择第 0 列和第 4 列
    """
  4. torch.norm(input, p='fro', dim=None, keepdim=False, out=None, dtype=None)

    将给定的 input 这个 tensor 按照给定的 dim 计算范数,具体计算的是什么范数由 p 决定

    p=1 表示第一范数,即 tensor 中每个元素绝对值之和

    p=2 表示第二范数,即 tensor 中每个元素平方和的和,再开根号

    其他表示无穷范数,即 tensor 中绝对值最大的元素

    py 复制代码
    import torch
    """
    	inputs.shape = (3, 3, 4)
    """
    inputs = torch.tensor([[[ 1.,  2.,  3.,  4.],
                           [ 2.,  4.,  6.,  8.],
                           [ 3.,  6.,  9., 12.]],
                           [[ 1.,  2.,  3.,  4.],
                           [ 2.,  4.,  6.,  8.],
                           [ 3.,  6.,  9., 12.]],
                           [[ 1.,  2.,  3.,  4.],
                           [ 2.,  4.,  6.,  8.],
                           [ 3.,  6.,  9., 12.]]])
     
    """
    inputs1.shape = (1, 3, 4)
    对于 dim=0 进行 L2 范数的计算,就是考虑将 (i, j, k) 其中所有的 i 的元素平方和加起来再开根号
    这里 sqrt((0, 0, 0)^2 + (1, 0, 0)^2 + (2, 0, 0)^2) = sqrt(3) = 1.7321
    tensor([[[ 1.7321,  3.4641,  5.1962,  6.9282],
             [ 3.4641,  6.9282, 10.3923, 13.8564],
             [ 5.1962, 10.3923, 15.5885, 20.7846]]])
    """
    inputs1 = torch.norm(inputs, p=2, dim=0, keepdim=True)
    print(inputs1)
    
    """
    inputs2.shape = (3, 1, 4)
    对于 dim=1 进行 L2 范数的计算,就是考虑将 (i, j, k) 其中所有的 j 的元素平方和加起来再开根号
    这里 sqrt((0, 0, 0)^2 + (0, 1, 0)^2 + (0, 2, 0)^2) = sqrt(1+4+9) = 3.7417
    tensor([[[ 3.7417,  7.4833, 11.2250, 14.9666]],
            [[ 3.7417,  7.4833, 11.2250, 14.9666]],
            [[ 3.7417,  7.4833, 11.2250, 14.9666]]])
    """
    inputs2 = torch.norm(inputs, p=2, dim=1, keepdim=True)
    print(inputs2)
    
    """
    inputs3.shape = (3, 3, 1)
    对于 dim=2 进行 L2 范数的计算,就是考虑将 (i, j, k) 其中所有的 k 的元素平方和加起来再开根号
    这里 sqrt((0, 0, 0)^2+(0, 0, 1)^2+(0, 0, 2)^2+(0, 0, 3)^2) = sqrt(1+4+9+16) = 5.4772
    tensor([[[ 5.4772],
             [10.9545],
             [16.4317]],
    
            [[ 5.4772],
             [10.9545],
             [16.4317]],
    
            [[ 5.4772],
             [10.9545],
             [16.4317]]])
    """
    inputs3 = torch.norm(inputs, p=2, dim=2, keepdim=True)
    print(inputs3)
  5. torch.chunk(input, chunks, dim=0) → List of Tensors

    input 这个 tensor 分成 chunks 个 tensors ,按照 dim 来划分。

    py 复制代码
    import torch
    
    t = torch.arange(1, 28).view(3, 3, 3)
    
    """
    tensor([[[ 1,  2,  3],
             [ 4,  5,  6],
             [ 7,  8,  9]],
    
            [[10, 11, 12],
             [13, 14, 15],
             [16, 17, 18]],
    
            [[19, 20, 21],
             [22, 23, 24],
             [25, 26, 27]]])
    shape = (3, 3, 3)
    """
    print(t)
    
    """
    按照 dim=0 划分,那么划分结果为
    (tensor([[[1, 2, 3],
             [4, 5, 6],
             [7, 8, 9]]]), 
     tensor([[[10, 11, 12],
             [13, 14, 15],
             [16, 17, 18]]]), 
     tensor([[[19, 20, 21],
             [22, 23, 24],
             [25, 26, 27]]]))
    """
    print(torch.chunk(t, chunks=3, dim=0))
    
    """
    按照 dim=1 划分,那么划分结果为
    (tensor([[[ 1,  2,  3]],
             [[10, 11, 12]],
             [[19, 20, 21]]]), 
    
     tensor([[[ 4,  5,  6]],
             [[13, 14, 15]],
             [[22, 23, 24]]]), 
             
     tensor([[[ 7,  8,  9]],
             [[16, 17, 18]],
             [[25, 26, 27]]]))
    """
    print(torch.chunk(t, chunks=3, dim=1))
    
    """
    按照 dim=2 划分,那么划分结果为
    (tensor([[[ 1],
             [ 4],
             [ 7]],
    
            [[10],
             [13],
             [16]],
    
            [[19],
             [22],
             [25]]]), 
    tensor([[[ 2],
             [ 5],
             [ 8]],
    
            [[11],
             [14],
             [17]],
    
            [[20],
             [23],
             [26]]]), 
    tensor([[[ 3],
             [ 6],
             [ 9]],
    
            [[12],
             [15],
             [18]],
    
            [[21],
             [24],
             [27]]]))
    """
    print(torch.chunk(t, chunks=3, dim=2))
相关推荐
九河云几秒前
电网“数字配电房”:局放AI模型故障定位缩到30厘米
人工智能·安全·数字化转型·智能电视
Echo_NGC22371 分钟前
【联邦学习完全指南】Part 5:安全攻防与隐私保护
人工智能·深度学习·神经网络·安全·机器学习·联邦学习
清铎2 分钟前
项目_华为杯’数模研赛复盘_第二问
深度学习·算法·机器学习
技术大咖--上好嘉3 分钟前
科技守护温情,智慧康养让陪伴跨越距离
人工智能·科技·ai·生活·健康医疗
100分简历4 分钟前
无图标简洁大方的简历模板下载
人工智能·面试·职场和发展·pdf·编辑器
海绵宝宝_4 分钟前
Chrome强开Gemini助手教程
前端·人工智能·chrome
八月瓜科技6 分钟前
AI侵权频发:国内判例定边界,国际判决敲警钟
大数据·人工智能·科技·深度学习·机器人
无垠的广袤7 分钟前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:人脸检测
linux·人工智能·python·opencv·开发板
A01234123458 分钟前
当AI成为“仿生绿植”:从颜廷利《升命学说》看技术时代的灵魂缺失
人工智能·心理学三大泰斗谁最厉害·中国最出名的心理学专家·心理学的三大巨头·中国心理学第一名是谁·中国最顶尖的心理学家·世界公认顶尖心理学家
新缸中之脑8 分钟前
用Ollama Launch连接AI编码代理
人工智能