为什么我们将 nn.Module 作为参数传递给神经网络的类定义?

Fra*_*ese 5 python module machine-learning pytorch

我想理解为什么当我们为像 GAN 这样的神经网络定义类时,我们将 torch.nn.Module 作为参数传递

import torch
import torch.nn as nn

class Generator(nn.Module):
    def __init__(self, input_size, hidden_size, output_size, f):
        super(Generator, self).__init__()
        self.map1 = nn.Linear(input_size, hidden_size)
        self.map2 = nn.Linear(hidden_size, hidden_size)
        self.map3 = nn.Linear(hidden_size, output_size)
        self.f = f
Run Code Online (Sandbox Code Playgroud)

pro*_*sti 4

这条线

class Generator(nn.Module):
Run Code Online (Sandbox Code Playgroud)

simple 表示该类Generator将继承该类nn.Module,它不是一个参数。

然而,dunder init方法:

def __init__(self, input_size, hidden_size, output_size, f):
Run Code Online (Sandbox Code Playgroud)

有自我,这就是为什么你可以将其视为一个论点。

嗯,这是 Python 类实例self。吉多在他的博客中解释说,关于它应该保留还是应该消失,存在着一些争论why it has to stay