我正在尝试使用Keras构建一个递归神经网络。我以here提出的讨论为基础。
然而,在原始讨论中提出的解决方案中,据我所知,没有“#34;剧集”的概念。让我解释一下我的意思。
想象一下,你有6个实例x1,x2,x3,x4,x5,x6。给定大小为3的循环窗口,第一个输出为x3。我把它称为y3。因此,没有插曲概念的输入输出对看起来像这样:
然而,我的数据有明确的界限。我会在示例中有两集,因此训练对看起来像这样:
我的问题:在Keras可以这样做吗?
我应该如何保持输入输出对组织?除了x3和x6之外,网络不应对所有输入产生预测(无输出)。
PS:我可能会使用LSTM或经典复发。如果有使用LSTM的解决方案,我希望能够在每集后重置内存。
提前致谢。
答案 0 :(得分:1)
我相信这可以通过向后退一步,对提供给RNN模型本身的数据进行重组和整形来实现。冒着听起来冗长的风险,我提供以下解释:
您应该有一个 X 和一个 y 。我建议将它们都作为3D NumPy数组,其中
所以假设您有8个序列,3个时间步长和5个特征
shape(X)
# (8, 3, 5)
shape(y)
# (8, 3, 1)
现在假设您已经按照这种方式构造了数据,那么您要做的就是确保 X 和 y 训练实例彼此匹配你渴望。要使用注释,请执行以下操作:
print(X[0][0])
# [x1, x2, x3]
print(y[0][0])
# [y3]
print(X[1][0])
# [x4, x5, x6]
print(y[1][0])
# [y6]
现在说您已经具有用于输入模型的数据的(序列,时间步长,特征) 3D NumPy数组结构。只需从 X 和 y 中删除您不希望的训练实例。