def doubleFeature(self, pos, neg, conv_name, activation='tanh'):
name = '%s+%s' % (pos, neg)
filters = self.params['filters']
nb_filter = self.params['nb_filter']
convs = self.layers[conv_name]
features = []
pos = self.tensors[pos]
neg = self.tensors[neg]
for fsz, conv in zip(filters, convs):
sum = Merge(
mode='sum',
)([conv(pos), conv(neg)])
if type(activation) == type(''):
act = Activation(
activation, name='%s-act-%d' % ('+'.join(input_names), fsz)
)(sum)
else:
act = activation(
name='%s-advanced-act-%d' % (name, fsz)
)(sum)
maxpool = Lambda(
lambda x: K.max(x, axis=1),
output_shape=(nb_filter,),
name='%s-maxpool-%d' % (name, fsz)
)(act)
print('maxpool', maxpool._keras_shape)
features.append(maxpool)
if len(features) > 1:
return Merge(
mode='concat',
name='%s-feature' % name,
)(features)
else:
return features[0]
评论列表
文章目录