我正在为另一个数据集应用here中的时间序列建模。对于链接中的给定数据集,所有损失(即损失、平均绝对误差、验证损失、验证的平均绝对误差;最后两个损失并不是针对所有的历元模型),在历元中计算的损失值不为零,而当我改变数据集时,所有的损失值都为nan。与这里使用的数据集相比,我使用的数据集具有大约一半的读数数量。我的数据集具有以15分钟间隔同时从多个位置(40个奇数位置)记录的读数。
所有程序的培训函数定义为
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。
如何解决这一问题才能获得非零损失?
此外,我无法获得除基线模型之外的所有模型的预测。
1条答案
按热度按时间iyzzxitl1#
使用此代码片段将NaN更改为0,然后验证这一点,得到丢失和验证丢失的值。
PS:感谢评论中的帮助!