• 4:张量操作


     1:view reshape合并维度

     【注】:合并维度。若:x=torch.randn(4,4)。x.view(-1,8)其中的-1为自动计算剩余维度的大小即为2。x.view(-1)其中的-1表示拉直张量。

    2:unsqueeze()插入维度/squeeze()删除维度

     【注】当参数为正数是在前面插入,为负数时在后面插入。当一个tensor为4个维度时,可插入范围为[-5,5):

    如果需要在最后一个维度之后插入一个维度可以用unqueeze(4)也可以用unqueeze(-1);

    如果需要在最前面插入一个维度可以用unqueeze(0)也可以用unqueeze(-5).

    [注]unqueeze(5)会报错。

     

     【注】当不给参数(维度的索引)时,删除所有size为1的维度。

    【注】只能删除size为1的维度

    3:expand/repeat维度扩展

     [注]维度扩展只能扩展size为1的维度,当expand()中某一维度的参数为-1时表明该维度不进行扩展,主要用于某一维度的size需要计算才能得到,故可以用-1表示该维度不进行扩展。

     [注]不推荐使用repeat会增加使用的内存

    4:t()/transpose()/permute()维度交换

     [注]在维度变化之后(转置),会导致数据不连续,故需要用contiguous()将数据连续起来。

    view()展开时应该根据合并之前的维度size展开

     【注】permute()函数的参数为原来维度的索引,可以一次实现多次维度交换,由于交换之后被打乱故也需要用contiguous()连续起来。

     5:打平层(网络层):Flatten()该层是自定义的一个网络层,pytorch中没有提供实现的类

     【注】pytorch中未提供这个打平,需要自己定义。以上我已经定义好,大家可以在后面网络构建时使用。

  • 相关阅读:
    java 深入理解jvm内存模型 jvm学习笔记
    java实体 和 xml相互转换
    clickhouse 离线/在线 安装和java通过jdbc链接
    clickhouse安装 Requires: libstdc++.so.6(GLIBCXX_3.4.19)(64bit)
    maven pom.xml详解
    elasticsearch 简单demo RestHighLevelClient LowLeveClient
    从一段时间段中获取所有日期
    hadoop 输入路径用正则表达式被默认处理为多个参数的问题
    对象变化影响map中的数据
    小技巧积累
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/14989797.html
Copyright © 2020-2023  润新知