• Pytorch学习(四)


    1、range和arange
    创建1维张量
    这里给出一段示例:

    z = torch.range(1,10)
    print(z,z.shape)
    
    z = torch.arange(1,10)
    print(z,z.shape)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    torch.range(1,10)和 torch.arange(10)都产生了一个1维的数组,类型是 <class ‘torch.Tensor’>
    二者不同的是
    range产生的长度是10-1+1=10 是由1到10组成的1维张量,类型float
    而arange产生的是10-1=9 由1-9组成的1维度张量 ,类型int
    他们的输出分别是
    在这里插入图片描述

    需要注意的是,range第一个值不能缺省,arange可以,默认0,其输出就是:tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) torch.Size([10])

    # z = torch.range(10)
    # print(z,z.shape)
    z = torch.arange(10)
    print(z,z.shape)
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    二、repeat复制张量

    z = torch.arange(10)
    print(z,z.shape)
    z = torch.arange(10).repeat(10,1)
    print(z,z.shape)
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    z = torch.arange(10).repeat(10,2,1)
    在这里插入图片描述
    三、View:改变张量形状
    View的机制顺序地拿数据填充形状,注意,定义的形状所需要的数据的数量必须=能提供的数据数量
    比如:[10x10] 的张量可以.view(1,1,10,10) 也可以.view(5,20) 但是不可以.view(10,11) ,一旦数据数量不同,就会报数据无效的错误
    代码示例

    z = torch.arange(10)
    print(z,z.shape)
    z = torch.arange(10).repeat(10,1)
    print(z,z.shape)
    z = torch.arange(10).repeat(10,1).view(1,1,10,10)
    print(z,z.shape)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    z = torch.arange(10).view(1,10).repeat(10,2)
    print(z,z.shape)
    
    • 1
    • 2

    在这里插入图片描述

    四、Concat和add操作
    Concat:张量拼接,会扩充两个张量的维度,
    add:张量相加,张量直接相加,不会扩充维度。

    一般情况下,feature maps的结合有两种方法,一种是元素对应相加,简称add,另一种就是把特征图堆到一起来,简称concatenate。
    假设feature map 1 的维度为B1∗ C1 ∗ H1 ∗ W1
    feature map 2 的维度为B2 ∗ C2 ∗ H2 ∗ W2 ​

    1)在add情况下,就是两个四维矩阵的按元素相加,那么这时候我们需要两个矩阵维度全部相等。并且相加后矩阵维度不变。
    例如26 * 26 * 256和26 * 26 * 256相加,结果还是26 * 26 * 256

    2)在concatenate情况下,我们把两个矩阵在某个维度叠加起来,这要求在这个连接的维度上可以不同,但是在其他维度上必须相等。叠加后,某个维度会增加,是两个矩阵上的某个维度相加。比如,我们在Channel这个维度上连接两个矩阵,那么新的矩阵维度是B2 ∗ ( C2 + C1 )∗ H2 ∗ W2
    例如26 * 26 * 256和26 * 26 * 512相加,结果是26 * 26 * 768

  • 相关阅读:
    2023年浙江工业大学MPA提前批招生通知
    yolo系列的Neck模块
    【MySQL】MySQL建表与常见类型设计陷阱(MySQL专栏启动)
    【数据结构】二叉树(C语言实现)
    干货丨小米自研主动降噪技术在Redmi Buds Pro4上的应用
    数据库学习之表的增删查改
    flink时间处理语义
    MySQL总结
    Android图形-架构1
    在Google Kubernetes集群创建分布式Jenkins(二)
  • 原文地址:https://blog.csdn.net/qq_27353621/article/details/125537140