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))
相关推荐
千天夜14 分钟前
激活函数解析:神经网络背后的“驱动力”
人工智能·深度学习·神经网络
大数据面试宝典15 分钟前
用AI来写SQL:让ChatGPT成为你的数据库助手
数据库·人工智能·chatgpt
封步宇AIGC21 分钟前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
m0_5236742122 分钟前
技术前沿:从强化学习到Prompt Engineering,业务流程管理的创新之路
人工智能·深度学习·目标检测·机器学习·语言模型·自然语言处理·数据挖掘
HappyAcmen32 分钟前
IDEA部署AI代写插件
java·人工智能·intellij-idea
噜噜噜噜鲁先森1 小时前
看懂本文,入门神经网络Neural Network
人工智能
InheritGuo1 小时前
It’s All About Your Sketch: Democratising Sketch Control in Diffusion Models
人工智能·计算机视觉·sketch
weixin_307779132 小时前
证明存在常数c, C > 0,使得在一系列特定条件下,某个特定投资时刻出现的概率与天数的对数成反比
人工智能·算法·机器学习
封步宇AIGC2 小时前
量化交易系统开发-实时行情自动化交易-3.4.1.6.A股宏观经济数据
人工智能·python·机器学习·数据挖掘
Jack黄从零学c++2 小时前
opencv(c++)图像的灰度转换
c++·人工智能·opencv