Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/windows-phone-8/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
keras中自动编码器最后一层的裁剪_Keras_Crop_Convolution_Keras Layer_Autoencoder - Fatal编程技术网

keras中自动编码器最后一层的裁剪

keras中自动编码器最后一层的裁剪,keras,crop,convolution,keras-layer,autoencoder,Keras,Crop,Convolution,Keras Layer,Autoencoder,我有形状391 x 400的图像。我尝试使用所述的自动编码器 具体而言,我使用了以下代码: from keras.layers import Input, Dense, Conv2D, MaxPooling2D, UpSampling2D from keras.models import Model from keras import backend as K input_img = Input(shape=(391, 400, 1)) # adapt this if using `chan

我有形状
391 x 400
的图像。我尝试使用所述的自动编码器

具体而言,我使用了以下代码:

from keras.layers import Input, Dense, Conv2D, MaxPooling2D, UpSampling2D
from keras.models import Model
from keras import backend as K

input_img = Input(shape=(391, 400, 1))  # adapt this if using `channels_first` image data format

x = Conv2D(16, (3, 3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
encoded = MaxPooling2D((2, 2), padding='same')(x)

# at this point the representation is (4, 4, 8) i.e. 128-dimensional

x = Conv2D(8, (3, 3), activation='relu', padding='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
x = Conv2D(16, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
我得到以下信息:

ValueError: Error when checking target: expected conv2d_37 to have shape (None, 392, 400, 1) but got array with shape (500, 391, 400, 1)
我需要的是:将最后一层从
392x400
降下/裁剪/重塑为
391x400


谢谢您的帮助。

有一个名为
croping2d
的层。要将最后一层从
392 x 400
裁剪到
391 x 400
,您可以通过以下方式使用它:

cropped = Cropping2D(cropping=((1, 0), (0, 0)))(decoded)
autoencoder = Model(input_img, cropped)
元组
((1,0)、(0,0))
表示从顶部裁剪一行。如果要从底部裁剪,请使用
((0,1)、(0,0))
。有关
裁剪
参数的详细说明,请参见