Я хочу подключить model_1
:
x_a = Input((5,))
hidden_a = Dense(2)(x_a)
hidden_b = Dense(2)(x_a)
model_1 = Model(x_a, [hidden_a, hidden_b])
и model_2
:
x_b = Input((2,))
output = Dense(1)(x_b)
model_2 = Model(x_b, output)
Я могу сделать это с помощью следующей строки:
model_3 = Model(x_a, model_2(model_1.outputs[0]))
Однако я хотел бы определить произвольное количество моделей, и поэтому я хотел бы использовать функции для этого.
Интересно, что когда я пытаюсь встроить каждую модель в функцию, выполните следующие действия:
def model1():
x_a = Input((5,))
hidden_a = Dense(2)(x_a)
hidden_b = Dense(2)(x_a)
model_1 = Model(x_a, [hidden_a, hidden_b])
return model_1
def model2():
x_b = Input((2,))
output = Dense(1)(x_b)
model_2 = Model(x_b, output)
return model_2
input_a = Input((5,))
m1 = model1()
m2 = model2()
m3 = Model(input_a, m2(m1.outputs[0]))
Я получаю сообщение об ошибке:
ValueError: Graph disconnected: cannot obtain value for tensor Tensor("input_3:0", shape=(?, 5), dtype=float32) at layer "input_3". The following previous layers were accessed without issue: []
.
В основном я хочу сделать то же самое, что и в этом посте: Почему при использовании этой простой модели с несколькими выходами Keras жалуется на отсутствие градиентов?
Но с функциями.
Есть ли способ использовать функцию, чтобы делать то, что я хочу, или вы думаете, что вместо этого лучше использовать пользовательские слои?
Спасибо.