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