我有一个用Keras编写的自动编码器,如下所示。我收到以下错误,并且不确定如何解决,有什么想法吗?
ValueError:检查输入时出错:预期input_1具有形状 (无,65563),但数组的形状为(374,65536)
from keras.layers import Input, Dense, Flatten
from keras.models import Model
from keras.preprocessing.image import img_to_array
import cv2
import numpy
import os
training_directory = '/training'
validation_directory ='/validation'
results_directory = '/results'
training_images = []
validation_images = []
# the size of the encoded represenatation
encoding_dimension = 784
# input placeholder
input_image = Input(shape=(65563,))
# the encoded representation of the input
encoded = Dense(encoding_dimension,activation='relu')(input_image)
# reconstruction of the input (lossy)
decoded = Dense(65563,activation='sigmoid')(encoded)
# map the input image to its reconstruction
autoencoder = Model(input_image,decoded)
# encoder model
# map an input image to its encoded representation
encoder = Model(input_image,encoded)
# decoder model
# place holder fpr an encoded input
encoded_input = Input(shape=(encoding_dimension,))
# retrieve the last layer of the autoencoder model
decoder_layer = autoencoder.layers[-1]
# create the decoder model
decoder = Model(encoded_input,decoder_layer(encoded_input))
for root, dirs, files in os.walk(training_directory):
for file in files:
image = cv2.imread(root + '/' + file)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image = img_to_array(image)
training_images.append(image)
training_images = numpy.array(training_images)
for root, dirs, files in os.walk(validation_directory):
for file in files:
image = cv2.imread(root + '/' + file)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image = img_to_array(image)
validation_images.append(image)
validation_images = numpy.array(validation_images)
# reshape data
training_images = training_images.reshape((len(training_images), numpy.prod(training_images.shape[1:])))
validation_images = validation_images.reshape((len(validation_images), numpy.prod(validation_images.shape[1:])))
autoencoder.compile(optimizer='adam',loss='binary_crossentropy')
autoencoder.fit(training_images,epochs=10,batch_size=20,shuffle=True,validation_data=(validation_images))
encoded_images = encoder.predict(validation_images)
decoded_images = decoder.predict(encoded_images)
谢谢。
答案 0 :(得分:1)
写65563
而不是65536
可能是造成此问题的错字。