Keras中的掩膜层具有多个序列和不完整数据(LSTM)

时间:2018-07-26 17:01:52

标签: python tensorflow keras lstm

我有数据序列,想用LSTM预测下一个时间步长(评分!)。原始数据看起来像这样(示例)。

Name Age School Rating John 9 West 1 John 10 West 2 John 11 West 1 John 12 West 3

Name Age School Rating Sally 15 West 2 Sally 16 West 1 Sally 17 West 1

现在有几件事要提及。
1.序列可以具有不同的长度
2.就上下文(年龄)而言,样本可能处于不同的时间步
3.时间步长可能在前面,中间和末尾丢失。

到目前为止,我的解决方案。
1.我使用DictVectorizer将类别特征转换为数字特征
2.我使用的是LSTM模型(keras),batch_size = 13
3.我手动填充条目以创建长度为13的序列
示例:
Name Age School Rating Sally 6 None 0 Sally 7 None 0 Sally 8 None 0 Sally 9 None 0 Sally 10 None 0 Sally 11 None 0 Sally 12 None 0 Sally 13 None 0 Sally 14 None 0 Sally 15 West 2 Sally 16 West 1 Sally 17 West 1 Sally 18 None 0

现在,当我将填充值输入LSTM时,我当然想跳过它。我想使用遮罩层。但是我不能给masking层一个masking_values,因为我的矢量化分类数据中有几个1和0。等级是我的Y值。我想给遮罩层一个特征School=None的索引,如果它显示1,则应该跳过时间步长。

这是我的模型设置:

model = Sequential()
model.add(Masking(mask_value=0, batch_input_shape=(24, 1, 1471)))
model.add(LSTM(4, input_shape=(None,1471), return_sequences=False, stateful=True))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')

0 个答案:

没有答案
相关问题