【问题标题】:Multi-Layer Neural Network Errors多层神经网络错误
【发布时间】:2020-11-28 21:39:05
【问题描述】:

我之前发布过,但我发布了一个不同的神经网络,我试图在同一个数据集上运行。我正在尝试在 sklearn 数据集上运行。 这是我迄今为止编写的代码:

X, y = make_moons(200, noise=0.2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=1, stratify = y)
class MultiLayerPerceptron(nn.Module):
    def __init__(self):
        super(MultiLayerPerceptron, self).__init__()
        self.fc1 = nn.Sigmoid()
        self.fc2 = nn.Sigmoid()
        self.fc3 = nn.Sigmoid()

    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

model = MultiLayerPerceptron)
optimizer = torch.optim.Adam(model.parameters(), lr = 0.001)
loss_fn = nn.CrossEntropyLoss()
epochs = 1000

def print_(loss):
    print("Loss", loss)

x, y = Variable (torch.from_numpy(X_train)).float(), Variable(torch.from_numpy(y_train)).long()

for epoch in range(1, epochs + 1):
    print("Epoch #", epoch)
    y_pred = model(x)
    loss = loss_fn(y_pred, y)
    print_(loss.item())

    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

x_test = Variable(torch.from_numpy(X_test)).float()
model.eval()
pred = model(x_test)
pred = pred.detach().numpy()

print("Accuracy", accuracy_score(y_test, np.argmax(pred, axis = 1)))

但是当我运行它时,我得到了这个错误:

line 47, in __init__
    raise ValueError("optimizer got an empty parameter list")
ValueError: optimizer got an empty parameter list

我正在尝试运行一个 3 层神经网络来对数据集进行分类,但我不知道是什么阻止了它运行。

【问题讨论】:

    标签: machine-learning neural-network pytorch


    【解决方案1】:

    您将两个参数传递给模型的构造函数:

    model = MultiLayerPerceptron(X_train.shape[1], 1)
    

    但是你模型的构造函数不接受参数:

    def __init__(self):
    

    如果你真的需要它,像这样将它添加到构造函数中:

    def __init__(self,par1,par2):
    

    【讨论】:

      猜你喜欢
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 2011-03-28
      • 2019-10-12
      • 2016-09-02
      • 2017-12-05
      • 1970-01-01
      相关资源
      最近更新 更多