keras - 是否可以使整个模型或层序列递归重复?

keras - is it possible to make an entire model or sequence of layers repeat recursively?

我想做如下事情:

count = 0
myinput = Input(shape=(100,5))
#this is where we return to
while count < 10:
  lstm1 = LSTM(5,return_sequences=True)(myinput)
  merged = Concatenate(axis=1)([lstm1,myinput])  #I think that's the right axis lol.  Just an example
  myinput = LSTM(5,return_sequences=True)(merged)
  count += 1

result = Dense(1, activation='sigmoid')(myinput)

这只是一个例子,我永远不想专门制作这样的网络。但不管怎样,这段代码当然会生成一个层序列,对应于 lstm1、merged、myinput 的规范——并重复该序列 10 次。所以,30 个不同的层。

我只想要 3 层,我希望它在 while 循环中重新使用这些层。这意味着只有在特定次数的重复之后 lstm1 才不再接受输入。否则,网络将永远持续下去。

这有可能吗? 谢谢。

如果您知道:

  • 您正在增加每次迭代的步骤数。 (从 100 开始,接下来的 200,接下来的 300,等等)

那就很简单了:

originalInput = Input((100,5))
myinput = originalInput

lstm1 = LSTM(5,return_sequences=True)
lstm2 = LSTM(5,return_sequences=True)

for i in range(10):
    out = lstm1(myinput)
    out = Concatenate(axis=1)([out, myinput])
    out = lstm2(out)
    myinput = out

model = Model(originalInput, out)

串联轴:

  • 0: 样本或示例(批量大小)- 你几乎不会改变这个
  • 1:时间步长(初始为 100)
  • 2: 单位或特征 (5)