代码之家  ›  专栏  ›  技术社区  ›  Simplicity

ValueError:检查输入时出错:预期输入_1具有形状(None,65563),但获得具有形状(37465536)的数组

  •  0
  • Simplicity  · 技术社区  · 7 年前

    我有一个自动编码器,如下图所示。我发现以下错误,不知道如何解决,有什么想法吗?

    (无,65563)但获得了具有形状的数组(37465536)

    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)
    

    谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   Fons    7 年前

    写 65563 而不是 65536