我想将两个输出相似但输入不同的网络连接起来。输入分别是相同视频剪辑的光流和RGB版本。
我已经成功地连接了这两个网络,但我想使用一种融合参数来实验全局网络以不同的重要性级别对子网络进行训练的可能性。
因为我的网络是在Keras中实现的,所以我不知道如何使用这些函数https://keras.io/layers/merge/来实现
发布于 2019-12-02 04:21:08
你可以创建一个简单的可训练的乘以参数层...
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])或者你可以只使用一个非常基本的lambda层:
w1 = someWeight
w2 = 1 - w1
out = Lambda(lambda x: w1 * x[0] + w2 * x[1])([net1_output, net2_output])https://stackoverflow.com/questions/59128359
复制相似问题