объект типа ‘float’ не имеет функции len() и probelm генерации изображений

#python #image-processing #keras #deep-learning

#python #обработка изображений #keras #глубокое обучение

Вопрос:

Я занимаюсь классификацией изображений и пытаюсь повысить свою точность, для этой цели я пытаюсь сгенерировать изображение, но у меня возникла ошибка в пути к файлу, пожалуйста, помогите мне, как это сделать.

вот мой код :

 train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
        'C:\Users\NanduCn\jupter1\train-scene classification',
        target_size=(64, 64),
        batch_size=32,
        class_mode='categorical')

validation_generator = test_datagen.flow_from_directory(
        'C:\Users\NanduCn\jupter1\train-scene classification',
        target_size=(64, 64),
        batch_size=32,
        class_mode='categorical')

model.fit_generator(
        train_generator,
        steps_per_epoch=2000,
        epochs=50,
        validation_data=validation_generator,
        validation_steps=800)
  

У меня есть 6 классов изображений, но я получил 1 класс при генерации изображений, вот мои файлы, подобные этому train-scene classification is folder in train is images file and train.csv, and test.csv .

 Found 24335 images belonging to 1 classes.
Found 24335 images belonging to 1 classes.
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-57-faf37afc0119> in <module>()
     24         epochs=50,
     25         validation_data=0.25,
---> 26         validation_steps=800)

~Anaconda3libsite-packageskeraslegacyinterfaces.py in wrapper(*args, **kwargs)
     89                 warnings.warn('Update your `'   object_name   '` call to the '  
     90                               'Keras 2 API: '   signature, stacklevel=2)
---> 91             return func(*args, **kwargs)
     92         wrapper._original_function = func
     93         return wrapper

~Anaconda3libsite-packageskerasenginetraining.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
   1416             use_multiprocessing=use_multiprocessing,
   1417             shuffle=shuffle,
-> 1418             initial_epoch=initial_epoch)
   1419 
   1420     @interfaces.legacy_generator_methods_support

~Anaconda3libsite-packageskerasenginetraining_generator.py in fit_generator(model, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
    131             else:
    132                 # Prepare data for validation
--> 133                 if len(validation_data) == 2:
    134                     val_x, val_y = validation_data
    135                     val_sample_weight = None

TypeError: object of type 'float' has no len()
  

Комментарии:

1. возможно validation_data=[0.25]?

2. его проверка на наличие данных

3. taras подразумевалось, что validation_data должен быть список , а не одно значение. Вы обновили код, но не вывод ошибки.

4. привет, meowgoesthedog У меня есть 6 классов изображений, но он показывает 1 класс, не могли бы вы помочь мне, как сгенерировать изображение.

Ответ №1:

Как я могу видеть из предоставленной вами трассировки стека, validation_data=0.25 .

Поскольку validation_data это не объект, подобный списку, у него нет __len__ метода, следовательно, len(validation_data) генерируется ошибка.

Это не «какая-то ошибка пути к файлу», скорее вам нужно убедиться, что validation_data это действительно то, что вы думаете (какая-то пара данных-целевое значение). Пожалуйста, проверьте это.