首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >神经网络MLPRegressor?

神经网络MLPRegressor?
EN

Stack Overflow用户
提问于 2022-06-13 18:03:28
回答 1查看 265关注 0票数 1

我正在训练一个神经网络。首先,我考虑了一个只有一个隐藏层的NN。第二,我试图构造一个具有两个隐藏层的NN。这两个神经网络层上的神经元数目保持不变为5。训练模型的其他参数如下:

对于一个隐藏层:

代码语言:javascript
复制
regr = MLPRegressor(hidden_layer_sizes=(5,), activation='logistic',solver='sgd',alpha=0.0001   ,learning_rate='constant', learning_rate_init=0.001   ,random_state=1).fit(X_treino, Y_treino)

对于两个隐藏层:

代码语言:javascript
复制
regr = MLPRegressor(hidden_layer_sizes=(5,5,), activation='logistic',solver='sgd',alpha=0.0001   ,learning_rate='constant', learning_rate_init=0.001   ,random_state=1).fit(X_treino, Y_treino)

然而,第二个神经网络的得分要比第一个神经网络差得多。我不知道为什么..。有人能跟我解释一下吗?

我正在使用的数据集是“http://archive.ics.uci.edu/ml/datasets/Airfoil+Self-Noise”上的一个可获取的数据集,它导致了一个回归问题。

EN

回答 1

Stack Overflow用户

发布于 2022-06-13 20:29:05

创建更大的NNs并不总是创造更好的结果,我能想到的最好的解释是梯度下降。梯度下降是指模型的权重(在这种情况下,层的大小和每个层中节点的数量)如何影响模型的学习能力。多重权值组合之间的交叉验证,可以用来估计给定问题的最佳权值,即超参数整定。可以使用这样的MLPRegressor来进行超参数优化:

代码语言:javascript
复制
param_grid = {
    'hidden_layer_sizes': [(150,100,50), (120,80,40), (100,50,30)],
    'max_iter': [50, 100],
    'activation': ['tanh', 'relu'],
    'solver': ['sgd', 'adam'],
    'alpha': [0.0001, 0.05],
    'learning_rate': ['constant','adaptive'],
}

grid = GridSearchCV(mlp_classifier, param_grid, n_jobs= -1, cv=5)
grid.fit(X_train, y_train)

print(grid.best_params_)

参数可以任意选择,可以在:https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPRegressor.html中看到,尝试不同的组合,以获得更好的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72607254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档