我正在研究一种卷积神经网络来处理可变大小的图像:
基本上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
维度的输出大小相匹配
我不能使用填充或裁剪,因为填充是相对于层的大小进行的,并且在编译时不知道输入的大小
我试着制作一个自定义图层,但是没有任何区别,因为输出大小是正确计算的
我也尝试过使用不同的优化器,所以我不确定这里发生了什么
有什么想法吗
我不想调整图像的大小,因为这会弄乱我的数据集
目前没有回答
相关问题 更多 >
编程相关推荐