如何合并不同形状的图层?

问题描述 投票:0回答:1

我正在使用带有张量流后端的Keras。我想合并两个不同形状的图层。我有一个形状的图层(无,32)和另一个形状的卷积图层(无,16,16,32)。输出应具有形状(无,16,16),实际上是卷积单位的加权和。

我尝试通过Lambda层解决这个问题。我只是引入了tf.einsum操作来计算加权和。

def product_sum(inputs):
    conv_layers = inputs[0]   #(None, 16, 16, 32)
    weights = inputs[1]       #(None, 32)
    result = tf.einsum('ijkl, il->ijk', conv_layers, weights) 
    return result

# merge two layers
conv_output = basic_model.get_layer(last_conv_layer).output 
weight_output = basic_model.get_layer(weights_layer).output
weight_sum_ = Lambda(product_sum)
result = weight_sum([conv_output, weight_output])
model = Model(inputs=[basic_model.input], outputs=[result])

我认为它有效,但在tf.einsum中出现错误:“ValueError:指数的格式不正确:ijkl,il-> ijk”。

python-2.7 tensorflow keras
1个回答
0
投票

试试这个:

merged = concatenate([layer1, layer2, ..., layerN])

用您自己的图层名称替换layersN。

我已经开发出类似这样的东西。拿一个look here

© www.soinside.com 2019 - 2024. All rights reserved.