微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在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 举报,一经查实,本站将立刻删除。