我构建了一个神经网络,包含15个特征或列,每个特征/列的值范围从-50到+100,输出值应始终为正数。
问题在于损失和准确性,每个epoch的损失值都非常大
代码如下所示:
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)
回答:
由于您使用的是回归问题,我认为使用均方误差是合适的。考虑到目标值的可能变化范围很大,所以损失值如此之高并不 surprising。我建议找到一种方法来缩放值,使方差接近1,可能通过应用对数函数。此外,由于您的输入值从-50到+100不等,我还建议将这些值缩放到类似[-1, 1]的范围内。