Machine learning Keras中幕式模式的多对一递归网络

Machine learning Keras中幕式模式的多对一递归网络,machine-learning,neural-network,deep-learning,keras,recurrent-neural-network,Machine Learning,Neural Network,Deep Learning,Keras,Recurrent Neural Network,我正试图用Keras建立一个递归神经网络。我以所提出的讨论为基础 然而,据我所知,在最初讨论中提出的解决方案中,没有“插曲”的概念。让我解释一下我的意思 假设您有6个实例x1、x2、x3、x4、x5、x6。给定大小为3的循环窗口,第一个输出为x3。我指的是y3。因此,没有插曲概念的输入输出对如下所示: [x1,x2,x3],[y3] [x2,x3,x4],[y4] [x3,x4,x5],[y5] [x4,x5,x6],[y6] 然而,我的数据有明确的界限。在本例中,我将有两集,因此训练对如下

我正试图用Keras建立一个递归神经网络。我以所提出的讨论为基础

然而,据我所知,在最初讨论中提出的解决方案中,没有“插曲”的概念。让我解释一下我的意思

假设您有6个实例x1、x2、x3、x4、x5、x6。给定大小为3的循环窗口,第一个输出为x3。我指的是y3。因此,没有插曲概念的输入输出对如下所示:

  • [x1,x2,x3],[y3]
  • [x2,x3,x4],[y4]
  • [x3,x4,x5],[y5]
  • [x4,x5,x6],[y6]
然而,我的数据有明确的界限。在本例中,我将有两集,因此训练对如下所示:

  • [x1,x2,x3],[y3]
  • [x4,x5,x6],[y6]
我的问题是:在Keras有可能做到这一点吗

我应该如何保持我的输入输出对组织?除x3和x6外,网络不应对所有输入产生预测(无输出)

PS:我可以使用LSTM或经典递归。如果有使用LSTM的解决方案,我希望能够在每集之后重置内存


提前感谢。

我相信这可以通过后退一步,重新构造和重塑您提供给RNN模型本身的数据来实现。冒着听起来冗长的风险,我给出以下解释:

你应该有一个X和一个y。我建议这两个都是3D NumPy阵列,其中

  • 数组[i]访问特定的序列i
  • 数组[i][j]访问特定序列i的特定时间步长j
  • 数组[i][j][k]在特定序列i的特定时间步j访问特定特征k(注意,y的k的长度将等于1,因为我们每个时间步仅预测一个目标)
假设你有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中删除您不想删除的训练实例

  • [x1,x2,x3],[y3]
  • [x2,x3,x4],[y4]
  • [x3,x4,x5],[y5]
  • [x4,x5,x6],[y6]

谢谢,我采用了这种方法,并在不久前对网络进行了培训。现在我只是不确定记忆是在两集之间重置的,还是在记忆中有残留。