为什么在 SupervisedDBNRegression, Neural Networks 中,我的 Y 的预测值相同且 R 平方为负

时间:2021-08-01 16:59:52

标签: python tensorflow deep-learning neural-network regression

我的模型没有输出我预期的结果。我不太了解 ANN 的方法。在从 https://github.com/albertbup/deep-belief-network 学习如何使用 SupervisedDBNClassification 之后,我决定使用位于 https://raw.githubusercontent.com/Honeson/ANN-qos_qoe/main/QoS/qosqoeNew2 的数据集尝试 SupervisedDBNRegression。在预训练阶段,我得到的误差小于 0.05,但在微调阶段损失高达 1468356。我的输出通常是相同的精确值。我尝试根据此处的解决方案更改学习率,规范日期等,Neural Network Always Produces Same/Similar Outputs for Any Input 但无济于事,我不断从 nan 输出到所有输出相同或在分类问题中的类中。部分代码用于查看我尝试过的内容。

X = df[columns]
Y = df['StartUpDelay'].values

# Splitting data
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=1337)

# Data scaling
min_max_scaler = MinMaxScaler()
X_train = min_max_scaler.fit_transform(X_train)

# Training
regressor = SupervisedDBNRegression(hidden_layers_structure=[100],
                                    learning_rate_rbm=0.05,
                                    learning_rate=0.1,
                                    n_epochs_rbm=20,
                                    n_iter_backprop=100,
                                    batch_size=16,
                                    activation_function='relu')

regressor.fit(X_train, Y_train)

# Test
X_test = min_max_scaler.transform(X_test)
Y_pred = regressor.predict(X_test)
print(Y_pred)
print('Done.\nR-squared: %f\nMSE: %f' % (r2_score(Y_test, Y_pred), mean_squared_error(Y_test, Y_pred))) 

我希望得到 Y_pred,例如 1002, 1653, 2764, 1121, 2112, 1452, 1324, 1331, 等,但我宁愿得到 nan, nan, nan, ..., nan 或 像 1456, 1456, 1456, 1456, ..., 1456 这样的值,或 像 1111, 1222, 1333, 1111, 1222, 1333, ..., 1111, 1222, 1333 这样的值。

我将感谢详细的帮助,因为我不太了解 ANN。提前致谢。

编辑 1:我再次将学习率从 0.01 更改为 0.00001,我得到了不同的 Y 预测值,但比预期结果大得多。我也得到了荒谬的指标

R 平方:-37862.875097 MSE:56730616135.090736

0 个答案:

没有答案