Error- AttributeError: у объекта 'DirectoryIterator' нет атрибута 'ndim в дизайне автоэнкодера в keras - PullRequest
0 голосов
/ 12 октября 2018

Я новичок в Python 3.5.Я пытаюсь запрограммировать простой авто-кодировщик, который будет обучаться на наборе данных из 60 изображений яблок и попытаться восстановить изображение, данное в корне.Я использовал следующие коды:

from keras.layers import Input, Dense
from keras.models import Model
import numpy as np
from PIL import Image 
from keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
image = Image.open('C:\Python35\Scripts\apple.jpg')
encoding_dim = 32
input_img = Input(shape=(65536,))
encoded = Dense(encoding_dim, activation='relu')(input_img)
decoded = Dense(65536, activation='sigmoid')(encoded)
autoencoder = Model(input_img, decoded)
encoder = Model(input_img, encoded)
encoded_input = Input(shape=(encoding_dim,))
decoder_layer = autoencoder.layers[-1]
decoder = Model(encoded_input, decoder_layer(encoded_input))
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
train_datagen=ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
    directory=r"C:\Users\vlsi\Desktop\train",
    batch_size=32,
    class_mode="categorical",
    shuffle=True,
    seed=42
)
autoencoder.fit(train_generator,
                epochs=2,
                batch_size=256,
                shuffle=True)
encoded_img = encoder.predict(np.array(image))
decoded_img = decoder.predict(encoded_img)
plt.imshow(decoded_img)

выдает ошибку

AttributeError: у объекта 'DirectoryIterator' нет атрибута 'ndim'

Есть идеи, что пошло не так?

1 Ответ

0 голосов
/ 12 октября 2018

Функция Keras fit принимает массивы данных, массивы, а не генераторы.Вам нужна функция fit_generator.Обратите внимание, что fit_generator принимает немного другие параметры, такие как steps_per_epoch вместо batch_size.

...