对可变大小图像进行上采样时的Keras形状不匹配

2024-05-03 08:02:53 发布

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

我正在研究一种卷积神经网络来处理可变大小的图像:

基本上this same question (同一教程之后:Keras autoencoder

除了我不能使用填充或裁剪,因为输入是可变大小的

下面是我的模型摘要

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, None, None, 3)     0         
_________________________________________________________________
FirstConv (Conv2D)           (None, None, None, 16)    448       
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, None, None, 16)    0         
_________________________________________________________________
conv2d_1 (Conv2D)            (None, None, None, 8)     1160      
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, None, None, 8)     0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, None, None, 8)     584       
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, None, None, 8)     0         
_________________________________________________________________
conv2d_3 (Conv2D)            (None, None, None, 8)     584       
_________________________________________________________________
up_sampling2d_1 (UpSampling2 (None, None, None, 8)     0         
_________________________________________________________________
conv2d_4 (Conv2D)            (None, None, None, 8)     584       
_________________________________________________________________
up_sampling2d_2 (UpSampling2 (None, None, None, 8)     0         
_________________________________________________________________
conv2d_5 (Conv2D)            (None, None, None, 16)    1168      
_________________________________________________________________
up_sampling2d_3 (UpSampling2 (None, None, None, 16)    0         
_________________________________________________________________
LastConv (Conv2D)            (None, None, None, 3)     435       
_________________________________________________________________

因此,如果我传入一个1382x1439维的图像,就会得到错误

tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [1,1382,1439,3] vs. [1,1380,1436,3]
     [[{{node training/Adadelta/gradients/loss/fix_layer_1_loss/mul_grad/BroadcastGradientArgs}}]]

即使网络应该与None维度的输出大小相匹配

我不能使用填充或裁剪,因为填充是相对于层的大小进行的,并且在编译时不知道输入的大小

我试着制作一个自定义图层,但是没有任何区别,因为输出大小是正确计算的

我也尝试过使用不同的优化器,所以我不确定这里发生了什么

有什么想法吗

我不想调整图像的大小,因为这会弄乱我的数据集


Tags: 图像none神经网络this卷积maxsameup