我想通过以下方式向Conv2D操作的输出添加标量值:
num_filters = 16
num_targets = 10
input_conv = layers.Conv2D(num_filters, (3, 3), activation='relu', padding='same')(input_img)
target_conv = layers.Conv1D(num_filters, num_targets, use_bias=False, activation='linear')(label)
# TODO: add output target_conv to input_conv along each of the filter dimensions
# this is like adding a scalar value for each of the filter dimensions
的input_conv
输出是形状(None, 28, 28, 16)
和target_conv
是形状的(None, 1, 16)
,其中28×28对应于图像尺寸和16是过滤器的数量。对于每个过滤器(每16个维度),我想添加相应的target_conv值作为标量。因此,想象一下我们只是在看第一个过滤器的输出,用于input_conv
和target_conv
,从而为我们提供了形状(None,28,28,1)和(None,1,1)。我想将的输出添加target_conv
到input_conv
第一个过滤器仍将输出(None,28,28,1)的输出,然后将针对每个过滤器尺寸输出(None,28,28,16)发生这种情况。
但是,我不确定该如何实施?
您要做的只是向target_conv输出添加一维,以使其具有4D格式。这使您可以在两个输出之间进行简单的求和
num_filters = 16
input_img = Input((28,28,1))
label = Input((10,1))
input_conv = Conv2D(num_filters, (3, 3),
activation='relu', padding='same')(input_img) # (None,28,28,num_filters)
target_conv = Conv1D(num_filters, 10,
use_bias=False, activation='linear')(label) # (None,1,num_filters)
target_conv = Reshape((1,1,num_filters))(target_conv) # (None,1,1,num_filters)
sum_filter = Add()([input_conv,target_conv]) # (None,28,28,num_filters)
m = Model([input_img,label], sum_filter)
m.summary()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句