Как сделать что-то подобное?
nn = get_networks()
A = nn(X_input)
B = nn(X_other_input)
C = A + B
model = ...
Так что все тензоры в nn одинаковы, отличаются только ветки ввода-обучения?
В чистом тензорном потоке вы делаете это с
tf.variable_scope('something', reuse=tf.AUTO_REUSE):
define stuff here
и осторожно присваивая названия слоям.
Но, в основном, вы можете создать nn в первую очередь, потому что вы не можете передать невызванный слой в слой call !
Например:
In [21]: tf.keras.layers.Dense(16)(tf.keras.layers.Dense(8))
...
AttributeError: 'Dense' object has no attribute 'shape'
UPDATE:
Я достиг этого, создав нескомпилированную модель в качестве подсети. Эта «модель» затем может быть передана другим функциям создания сети. Например, если у вас есть функциональное уравнение, которое вы хотите решить, вы можете аппроксимировать функцию сетью, а затем передать сеть функции, которая сама является сетью.