首页 > 解决方案 > pytorch中的神经网络定义如何使用pyton类

问题描述

为了了解这段代码的工作原理,我编写了一个小型复制器。self.hidden 变量如何在 forward 方法中使用变量 x?

enter code class Network(nn.Module):
def __init__(self):
    super().__init__()

    # Inputs to hidden layer linear transformation
    self.hidden = nn.Linear(784, 256)
    # Output layer, 10 units - one for each digit
    self.output = nn.Linear(256, 10)

    # Define sigmoid activation and softmax output 
    self.sigmoid = nn.Sigmoid()
    self.softmax = nn.Softmax(dim=1)

def forward(self, x):
    # Pass the input tensor through each of our operations
    x = self.hidden(x)
    x = self.sigmoid(x)
    x = self.output(x)
    x = self.softmax(x)

    return x

标签: pythonclassneural-networkpytorch

解决方案


你误解了什么self.hidden = nn.Linear(784, 256)。你写道:

hidden被定义为一个函数

但是这是错误的。self.hidden是类的一个对象nn.Linear。当您打电话时self.hidden(...),您不会将参数传递给nn.Linear; 您将参数传递给__call__(在nn.Linear类中定义)。

如果您想了解更多详细信息,我已经扩展了它在 PyTorch 中的工作原理:请参阅此答案


推荐阅读