我正在为另一个数据集应用时间序列建模。对于链接中的给定数据集,在历元中计算的所有损失(即损失、平均绝对误差、验证损失、验证的平均绝对误差;最后两个损失并非适用于所有历元模型(均为非零,而当我更改数据集时,所有损失值均为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
附言:谢谢你在评论中的帮助!