我的模型没有输出我预期的结果。我不太了解 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