问题描述
对于时间序列数据 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 (将#修改为@)