• pytorch 使用Module类和Sequential类自定义模型


    https://blog.csdn.net/qq_27825451/article/details/90550890这个链接超级详细!

    class NeuralNet(nn.Module):

    pytorch中其实一般没有特别明显的Layer和Module的区别,不管是自定义层、自定义块、自定义模型,都是通过继承Module类完成的,这一点很重要。其实Sequential类也是继承自Module类的。

    总结:pytorch里面一切自定义操作基本上都是继承nn.Module类来实现的

    一、module类

    class Module(object):
        def __init__(self):
        def forward(self, *input):
     
        def add_module(self, name, module):
        def cuda(self, device=None):
        def cpu(self):
        def __call__(self, *input, **kwargs):
        def parameters(self, recurse=True):
        def named_parameters(self, prefix='', recurse=True):
        def children(self):
        def named_children(self):
        def modules(self):  
        def named_modules(self, memo=None, prefix=''):
        def train(self, mode=True):
        def eval(self):
        def zero_grad(self):
        def __repr__(self):
        def __dir__(self):
    '''
    有一部分没有完全列出来
    '''

    我们在定义自已的网络的时候,需要继承nn.Module类,并重新实现构造函数__init__构造函数和forward这两个方法。但有一些注意技巧:

    (1)一般把网络中具有可学习参数的层(如全连接层、卷积层等)放在构造函数__init__()中,当然也可以把不具有参数的层也放在里面;

    (2)一般把不具有可学习参数的层(如ReLU、dropout、BatchNormanation层)可放在构造函数中,也可以不放在构造函数中。如果不放在构造函数__init__里面,那么在forward方法里面可以使用nn.functional来代替

    (3)forward方法是必须要重写的,它是实现模型的功能,实现各个层之间的连接关系的核心。

    二、sequential类

    三种实现方法:https://blog.csdn.net/qq_27825451/article/details/90551513

  • 相关阅读:
    Colidity-- NumberOfDiscIntersections
    Colidity--Triangle
    Colidity--CountDiv
    Colidity--MinAvgTwoSlice
    Colidity--GenomicRangeQuery
    Colidity--PassingCars
    操作系统--内存管理方式
    蓝桥杯练习系统—算法训练 P1102
    蓝桥杯练习系统—基础练习 完美的代价
    2n皇后问题
  • 原文地址:https://www.cnblogs.com/h694879357/p/15984458.html
Copyright © 2020-2023  润新知