【发布时间】:2019-06-11 23:02:56
【问题描述】:
我正在研究一个序列预测问题,其中我的输入具有大小(numOfSamples、numOfTimeSteps、特征),其中每个样本是独立的,每个样本的时间步数是统一的(在使用 keras 将长度预填充为 0 之后.pad_sequences),我的特征数是 2。总结一下我的问题,我想知道如何构建我的 Y-label 数据集来为模型提供数据,并希望了解如何正确构建我的模型以输出我想要的是。
我的第一个特征是编码为唯一 int 的分类变量,第二个特征是数字。我希望能够预测下一个分类变量以及关联的 feature2 值,然后使用它反馈到网络中以预测序列,直到输出 EOS 类别。
这是我一直在参考的主要资源,旨在尝试了解如何创建与 keras.fit_generator 一起使用的生成器。 [1]
对于如何抓取“X”数据的小批量并没有混淆,但对于“Y”数据,我不确定我想要做什么的正确格式。由于我试图预测一个类别,我认为 t+1 时间步长的单热向量表示将是编码第一个特征的正确方法,我猜会导致 4?维数numpy矩阵??但是我对如何处理第二个数字特征有点迷茫。
现在,这让我想到了有关架构以及如何构建模型来做我想做的事情的问题。下面的架构有意义吗?我相信缺少一些我不理解的东西。
建议的架构(参数填写松散,尚未设置):
model = Sequential()
model.add(Masking(mask_value=0., input_shape=(timesteps, features)))
model.add(LSTM(hidden_size, return_sequences=True))
model.add(TimeDistributed(Dense(vocab_size)))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['categorical_accuracy'])
model.fit_generator(...) #ill figure this out
因此,最后,softmax 激活可以预测 feature1 的下一个分类值。如何还输出 feature2 的值,以便我可以将两个特征的新预测作为下一个时间步长反馈回来?我是否需要某种并行架构,其中两个 LSTM 以某种方式组合在一起?
这是我第一次尝试使用神经网络或 Keras 做任何事情,我不会说我在 python 方面“很棒”,但我可以过得去。但是,我觉得我对基本的理论概念掌握得很好,但缺乏实践。
这个问题有点开放式,鼓励我挑选出我目前的策略。
再一次,总体目标是预测两个特征(分类、数字),以便从中间长度的序列中预测“完整序列”。
前任。我在这些填充的 max-len 序列上进行训练,但在生产中我想用它来预测当前看不见的时间步长的剩余部分,这将是可变长度的。
【问题讨论】:
-
仍在此处寻求更多指导。谢谢!
标签: python keras deep-learning lstm recurrent-neural-network