ValueError:检查目标时出错:预期model_2具有形状(无,252,252,1)但是具有形状的数组(300,128,128,3) [英] ValueError: Error when checking target: expected model_2 to have shape (None, 252, 252, 1) but got array with shape (300, 128, 128, 3)

查看:694
本文介绍了ValueError:检查目标时出错:预期model_2具有形状(无,252,252,1)但是具有形状的数组(300,128,128,3)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨我正在构建一个类别分类的图像分类器,其中我在运行此模型时使用了自动编码器,我通过此行获取此错误(autoencoder_model.fit)(ValueError:检查目标时出错:期望的model_2到有形状(无,252,252,1)但有阵形(300,128,128,3)。)

hi I am building a image classifier for one-class classification in which i've used autoencoder while running this model I am getting this error by this line (autoencoder_model.fit) (ValueError: Error when checking target: expected model_2 to have shape (None, 252, 252, 1) but got array with shape (300, 128, 128, 3).)

num_of_samples = img_data.shape[0]
labels = np.ones((num_of_samples,),dtype='int64')



labels[0:376]=0 
names = ['cats']


input_shape=img_data[0].shape



X_train, X_test = train_test_split(img_data, test_size=0.2, random_state=2)


inputTensor = Input(input_shape)
x = Conv2D(16, (3, 3), activation='relu', padding='same')(inputTensor)
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_data = MaxPooling2D((2, 2), padding='same')(x)

encoder_model = Model(inputTensor,encoded_data)

# at this point the representation is (4, 4, 8) i.e. 128-dimensional
encoded_input = Input((4,4,8))
x = Conv2D(8, (3, 3), activation='relu', padding='same')(encoded_input)
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_data = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

decoder_model = Model(encoded_input,decoded_data)

autoencoder_input = Input(input_shape)
encoded = encoder_model(autoencoder_input)
decoded = decoder_model(encoded)
autoencoder_model = Model(autoencoder_input, decoded)
autoencoder_model.compile(optimizer='adadelta', 
 `enter code here`loss='binary_crossentropy')


autoencoder_model.fit(X_train, X_train,
            epochs=50,
            batch_size=32,
            validation_data=(X_test, X_test),
            callbacks=[TensorBoard(log_dir='/tmp/autoencoder')])


推荐答案

解码器的输出形状与训练数据的形状之间存在简单的不兼容性。 (目标意味着输出)。

It's a simple incompatibility between the output shape of the decoder and the shape of your training data. (Target means output).

我看到你有2个MaxPoolings(将你的图像大小除以4)和三个上采样(将解码器的输入乘以8)。

I see you've got 2 MaxPoolings (dividing your image size by 4), and three upsamplings (multiplying the decoder's input by 8).

自动编码器的最终输出太大,与您的数据不匹配。您必须简单地在模型中工作才能使输出形状与您的训练数据相匹配。

The final output of the autoencoder is too big and doesn't match your data. You must simply work in the model to make the output shape match your training data.

这篇关于ValueError:检查目标时出错:预期model_2具有形状(无,252,252,1)但是具有形状的数组(300,128,128,3)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆