如何解决为什么我要为神经网络回归检索高值损失
我有以下格式的数据,其中包含 80 个实例。我需要预测两个参数的延迟和准确性
No Model Technique Latency Accuracy
0 1 Net Repartition 31308.4 0.99
1 2 Net Connection 30338.2 0.79
2 3 MobiNet Repartition 20360.1 0.89
predictors=data.drop(['Latency','Accuracy'],axis = 1)
target=data[['Latency','Accuracy']]
predictors_cat_converted=pd.get_dummies(predictors,prefix=['Model','Technique'])
pre_norms = (predictors_cat_converted-predictors_cat_converted.mean()/predictors_cat_converted.std())
def regression():
model=Sequential()
model.add(Dense(50,activation= 'relu',input_shape=(n_cols,)))
model.add(Dense(50,activation='relu'))#hidden layer
model.add(Dense(2))#output
model.compile(optimizer='adam',loss='mean_squared_error')
return model
model=regression()
model.fit(pre_norms,target,validation_split=.3,epochs=100,verbose=1)
输出检索高价值损失
Epoch 1/100
2/2 [==============================] - 1s 275ms/step - loss: 256321162.6667 - val_loss: 262150224.0000
Epoch 2/100
2/2 [==============================] - 0s 23ms/step - loss: 246612645.3333 - val_loss: 262146176.0000
Epoch 3/100
2/2 [==============================] - 0s 22ms/step - loss: 251778928.0000 - val_loss: 262142000.0000
Epoch 4/100
2/2 [==============================] - 0s 26ms/step - loss: 252470826.6667 - val_loss: 262137664.0000
Epoch 5/100
2/2 [==============================] - 0s 25ms/step - loss: 255799392.0000 - val_loss: 262133200.0000
Epoch 6/100
解决方法
您的数据非常少,只有 2 列、80 行和 2 个目标变量。你能做的就是:
- 添加更多数据。
- 规范化您的数据,然后将其提供给神经网络。
- 如果神经网络不能提供良好的准确性,请尝试使用随机森林或 XGBoost。
我还想补充一点,你的神经网络架构是错误的。具有 2 个输出和 softmax 激活的密集层在这里不会给您带来好的结果。您必须使用 TensorFlow 的 Funtional API
并制作 1 输入 2 输出神经网络架构。
您的目标变量之一达到了相当大的值。如您的数据摘录所示,“延迟”达到了大约 30,000 和 20,000 的值。 显然,如果您的模型一开始就做出了非常错误的预测,例如如果它预测您的延迟为“1”,则 MSE 将非常高。
您可以像处理输入一样标准化目标,使您的网络更容易学习目标。你的 MSE 和因此你的损失应该小得多
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。