keras - возможно ли сделать всю модель или последовательность слоев рекурсивно повторяющейся? - PullRequest
0 голосов
/ 24 января 2020

Я хотел бы сделать что-то вроде следующего:

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 слоя, я хочу, чтобы они снова использовали слои, пока l oop. Это означало бы, что только после определенного числа c повторений lstm1 больше не принимает ввод. В противном случае сеть будет go включена навсегда.

Возможно ли это? Спасибо.

1 Ответ

1 голос
/ 24 января 2020

Если вы знаете, что:

  • Вы увеличиваете количество шагов для каждой итерации. (Начните с 100, следующих 200, следующих 300 и т. Д. c.)

Тогда это довольно просто:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...