zoukankan      html  css  js  c++  java
  • 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中未提供这个打平,需要自己定义。以上我已经定义好,大家可以在后面网络构建时使用。

  • 相关阅读:
    python全栈学习--day39(multiprocess模块)
    python全栈学习--day38(多进程在python中的操作)
    python全栈学习--day36(socket验证客户端的合法性、 并发编程)
    python全栈学习--day35(黏包机制)
    python全栈学习--day33(网络编程-socket)
    python-sys模块
    python-os模块
    python-生成随机数random
    python-常用模块-time、datetime模块
    python-模块、包
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/14989797.html
Copyright © 2011-2022 走看看