如何在Keras中增加卷积层间的跳跃连接

2024-06-01 10:40:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在keras的剩余块之间添加一个跳过连接。这是我当前的实现,它不能工作,因为张量有不同的形状。在

函数如下所示:

def build_res_blocks(net, x_in, num_res_blocks, res_block, num_filters, res_block_expansion, kernel_size, scaling):
    net_next_in = net
    for i in range(num_res_blocks):
        net = res_block(net_next_in, num_filters, res_block_expansion, kernel_size, scaling)

        # net tensor shape: (None, None, 32)
        # x_in tensor shape: (None, None, 3)
        # Error here, net_next_in should be in the shape of (None, None, 32) to be fed into next layer
        net_next_in = Add()([net, x_in]) 

    return net

我得到的错误是:ValueError: Operands could not be broadcast together with shapes (None, None, 32) (None, None, 3)

我的问题是如何将这些张量添加或合并成正确的形状(None,None,32)。如果这不是正确的方法,你如何达到预期的结果?在

编辑:

res_块如下所示:

^{pr2}$

Tags: innonesizenetresbeblockkernel
1条回答
网友
1楼 · 发布于 2024-06-01 10:40:41

不能添加不同形状的张量。您可以将它们与keras.layers.Concatenate连接起来,但这将留下形状为[None, None, 35]的张量。在

或者,看看 Resnet50在Keras中的实现。对于要添加的尺寸不同的情况,它们的残差块在快捷方式中具有1x1xC卷积。在

相关问题 更多 >