如何在RNN中处理输入和输出序列中的缺失数据

问题描述

对于时间序列数据 D=[d1,d2,...,d20],50% 的数据缺失并标记为 -1。我将输入数据设置为 X = [d1,d19],并将输出数据设置为 Y = [d2,d3,d20]。我写了一个多对多的RNN,如下图。为了处理输入序列中缺失的时间步长,我添加一个掩码层以避免在训练中使用缺失的数据。对于输出序列中缺失的时间步长,我编写了一个自定义损失函数来避免计算该位置的误差。有很多方法可以处理丢失的输入序列,但是我找不到丢失输出序列的任何资源。有什么建议或想法吗?

def custom_loss(y_true,y_pred):
    idx  = tf.not_equal(y_true,-1)
    y_true = tf.boolean_mask(y_true,idx)
    y_pred = tf.boolean_mask(y_pred,idx)
    return losses.mean_squared_error(y_true,y_pred)

def modelMask():
  model = Sequential()
  model.add(Masking(mask_value=-1,input_shape=(19,1)))
  model.add(LSTM(100,activation='relu',return_sequences=True,activation= 'relu'))
  model.add(Dense(19))
  model.compile(loss = custom_loss,optimizer = 'adam',metrics = tf.keras.metrics.mean_squared_error)
  print(model.summary)
  return model

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)