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)
我想做如下事情:
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)