Вы можете создать просто обучаемое умножение на слой параметров ...
class MultiplyByTrainable(Layer):
def __init__(self, **kwargs):
super(MultiplyByTrainable, self).__init__(**kwargs)
def build(self, input_shape):
self.kernel = self.add_weight(name='kernel',
shape=(1,),
initializer='ones',
trainable=True)
#optional self.bias = self.add_weight(name='kernel',
# shape=(1,),
# initializer='zeros',
# trainable=True)
self.built = True
def call(self, inputs):
return inputs * self.kernel # + self.bias
def compute_output_shape(self, input_shape):
return input_shape
И попробовать что-то вроде:
out1 = MultiplyByTrainable(name='net_mult_1')(net1_output)
out2 = MultiplyByTrainable(name='net_mult_2')(net2_output)
outputs = Add()([out1, out2]) #or Concatenate()([out1, out2])
Или вы можете просто использовать оченьосновной лямбда-слой:
w1 = someWeight
w2 = 1 - w1
out = Lambda(lambda x: w1 * x[0] + w2 * x[1])([net1_output, net2_output])