首页 > 解决方案 > 回归问题的神经网络损失大于 9000

问题描述

我制作了一个具有 15 个特征或列的 NN,每个特征/列的范围从 -50 到 +100,并且输出应该始终为正。

问题在于损失和准确性,每个时期的损失都很大

代码如下:

td = pd.read_csv('data.csv')
tg = train_data.pop('RESULT')
dataset = tf.data.Dataset.from_tensor_slices((td.values, tg.values))
td = dataset.shuffle(len(td)).batch(1)
model = tf.keras.Sequential([
  tf.keras.layers.Dense(20, activation='relu'),
  tf.keras.layers.Dense(20, activation='relu'),
  tf.keras.layers.Dense(1)
])
model.compile(optimizer='adam',loss=tf.keras.losses.MeanSquaredError())
model.fit(td, epochs=100)

标签: tensorflowmachine-learningneural-network

解决方案


由于您使用的是回归,我认为使用均方误差很好。由于可能的目标值差异很大,因此损失如此之高,我并不感到惊讶。我建议找到一种方法来缩放值以使方差更接近 1,也许通过应用 log 函数。此外,由于您的输入包含从 -50 到 +100 不等的值,我还建议将这些值缩放为 [-1, 1] 之类的值。


推荐阅读