两个不同重要性的输入



我有一个CNN模型,有两个输入,像这样:

input_a = tf.keras.layers.Input(shape=[128, 128, 3])
input_b = tf.keras.layers.Input(shape=[28, 28, 3])
conv_a = tf.keras.layers.Conv2D(32, 3, 2)(input_a)
conv_b = tf.keras.layers.Conv2D(32, 3, 2)(input_b)
dense_a = tf.keras.layers.Dense(1)(conv_a)
dense_b = tf.keras.layers.Dense(1)(conv_b)
combined = tf.keras.layers.Add()([dense_a, dense_b])
model = tf.keras.models.Model(inputs=[input_a, input_b], outputs=conbined)

我发现这个网络从input_b分支学习了更多的信息,但我的设计是input_a更重要,input_b辅助input_a。因此,我想为这两个图层设置不同的重要性,因为我想让input_a更重要。我实现了一个加权层:

class WeightedAdd(tf.keras.layers.Layer):
def __init__(self, weight):
self.weight = weight
super(WeightedAdd, self).__init__()
def call(self, inputs, **kwargs):
return self.weight * inputs[0] + (1. - self.weight) * inputs[1]
def compute_output_shape(self, input_shape):
return input_shape[0]

现在,我用WeightedAdd:

代替我的Add<年代>= tf.keras.layers.Add相结合()([dense_a dense_b])
= WeightedAdd相结合(0.8)([dense_a dense_b])

但是,它似乎不起作用。我该如何实现我的想法?

好!似乎管用~~。设置input_a的权值像0.9999一样大于input_b,input_a更新后的差值大于input_b但我不确定它是否适合我的想法。

相关内容

  • 没有找到相关文章

最新更新