Epoch损失、平均绝对误差和验证损失为"0";nan";用于机器学习时间序列天气预测



我正在为另一个数据集应用时间序列建模。对于链接中的给定数据集,在历元中计算的所有损失(即损失、平均绝对误差、验证损失、验证的平均绝对误差;最后两个损失并非适用于所有历元模型(均为非零,而当我更改数据集时,所有损失值均为nan。与这里使用的数据集相比,我使用的数据集中大约有一半的读数。我的数据集有从多个位置(40多个位置(以15分钟间隔同时记录的读数。

所有程序的培训功能定义为

MAX_EPOCHS = 20
def compile_and_fit(model, window, patience=2):
early_stopping = tf.keras.callbacks.EarlyStopping(monitor='val_loss',
patience=patience,
mode='min')
model.compile(loss=tf.keras.losses.MeanSquaredError(),
optimizer=tf.keras.optimizers.Adam(),
metrics=[tf.keras.metrics.MeanAbsoluteError()])
history = model.fit(window.train, epochs=MAX_EPOCHS,
validation_data=window.val,
callbacks=[early_stopping])
return history

我还尝试过将model.compile更改为来运行该模型

opt = tf.keras.optimizers.Adam(0.001, clipnorm=1.)
model.compile(loss=["mse", "mse"], loss_weights=[0.9, 0.1], optimizer=opt)

通过寻找类似问题的解决方案。我的数据集的批量大小是4654,而给定笔记本中的数据集是1534。

如何解决这一问题以获得非零损失?

此外,我无法获得除基线模型之外的所有模型的预测。

使用此代码片段将NaN更改为0,然后进行验证,得到loss和validation loss的值。

df.replace(np.nan, 0.0, inplace=True) 
df.isnull().values.any()#check if nan are still there

附言:谢谢你在评论中的帮助!

相关内容

  • 没有找到相关文章