pytorch模塊介紹:torch.nn


一、簡介

    nn全稱為neural network,意思是神經網絡,是torch中構建神經網絡的模塊。

二、子模塊介紹

    2.1 nn.functional

    該模塊包含構建神經網絡需要的函數,包括卷積層、池化層、激活函數、損失函數、全連接函數等。

    例如:import torch.nn.functional as F

     loss_func = F.cross_entropy   #本例使用的是functional子模塊的交叉熵損失函數。

     loss = loss_func(model(x), y)

     loss.backward()     #更新權重及偏移量

    2.1.1 nn.functional模塊常見函數

    linear()   relu()   conv2d()  conv1d() avg_pool1d() avg_pool2d() threshold() sigmoid() tanh() softmax() 等

    詳見地址:https://pytorch-cn.readthedocs.io/zh/latest/package_references/functional/

    2.1.2 nn.functional中的函數與nn.Module()的區別是(例如:nn.functional.conv2d()和nn.Conv2d()):

    (1)nn.Module實現的層(layer)是一個特殊的類,都是由class Layer(nn.Module)定義,會自動提取可學習的參數。functinal模塊中的函數就是一個函數。

    (2)如果模型有可學習的參數時,最好使用nn.Module;否則既可以使用nn.functional也可以使用nn.Module,二者在性能上沒有太大差異,

      具體的使用方式取決於個人喜好。由於激活函數(ReLu、sigmoid、Tanh)、池化(MaxPool)等層沒有可學習的參數,可以使用對應的functional函數,

      而卷積、全連接等有可學習參數的網絡建議使用nn.Module。

  2.2  nn.Module & nn.Parameter

 

  2.3 torch.nn.Sequential()

    時序容器:參數為卷積層、池化層或激活層等,也可以用排序字典作為參數。例如:

    # Example of using Sequential

    model = nn.Sequential(

    nn.Conv2d(1,20,5),

    nn.ReLU(),

    nn.Conv2d(20,64,5),

    nn.ReLU())  

    model = nn.Sequential(OrderedDict([

         ('conv1', nn.Conv2d(1,20,5)),

        ('relu1', nn.ReLU()),

        ('conv2', nn.Conv2d(20,64,5)),

        ('relu2', nn.ReLU()) ]))

  2.4 torch.nn.ModuleList & torch.nn.ParameterList

 

 

 

 

    

    

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM