在 Keras 中连接之前调整卷积层的大小

Posted

技术标签:

【中文标题】在 Keras 中连接之前调整卷积层的大小【英文标题】:Resizing a convolution layer before concatenating in Keras 【发布时间】:2018-07-30 12:53:43 【问题描述】:

我正在阅读 U-Net: Convolutional Networks for Biomedical Image Segmentation 并希望在 Keras 中实现它。

在 U-Net 中,我需要连接卷积层,一个在收缩路径中,另一个在扩展路径中(论文中的图 1.1)。

但是,它们的大小不匹配,所以我必须在连接之前调整卷积层的输出大小。

我如何在 Keras 中做到这一点?

【问题讨论】:

【参考方案1】:

Keras 中有一个 Cropping2D 层:https://keras.io/layers/convolutional/#cropping2d

...
conv_13 = Conv2D(64, (3, 3), padding='same', activation='relu')(conv_12) # has outputsize of 568x568
...
crop_13 = Cropping2D((392, 392))(conv_13) # crop 568x568 to 392x392 symmetrically
merge_91 = Concatenate()([crop_13, upsampled_81) # concatenate both layers with same 2D size
...

将第一个尺寸 (568x568) 连接到最后一个上采样尺寸 (392x392) 的示例。

【讨论】:

以上是关于在 Keras 中连接之前调整卷积层的大小的主要内容,如果未能解决你的问题,请参考以下文章

inception模型和卷积层的残差连接的keras实现

Python keras如何将卷积层转换为lstm层后的输入大小

在 Keras 中,如何任意调整一维张量的大小?

计算CNN模型中Conv层的输出大小

用于 keras 中可变大小图像的全卷积自动编码器

如何在 Theano 中更改 CNN 中卷积层的大小