Разрешение «ImportError» при использовании «image_dataset_from_directory» в TensorFlow

При работе с TensorFlow и возникновении ошибки «ImportError: невозможно импортировать имя image_dataset_from_directory» из ошибки «tensorflow.keras.preprocessing» это может расстраивать. Эта ошибка обычно возникает, когда функция image_dataset_from_directory недоступна или устарела в используемой вами версии TensorFlow. В этой статье мы рассмотрим альтернативные методы загрузки наборов данных изображений с помощью TensorFlow, предоставив примеры кода для каждого подхода.

Методы загрузки наборов данных изображений:

  1. Метод: использование «ImageDataGenerator» и «flow_from_directory».
    Пример кода:

    from tensorflow.keras.preprocessing.image import ImageDataGenerator
    datagen = ImageDataGenerator(rescale=1./255)
    train_generator = datagen.flow_from_directory(
    directory='path/to/train',
    target_size=(224, 224),
    batch_size=32,
    class_mode='binary'
    )
  2. Метод: использование «tf.data.Dataset» и «tf.keras.preprocessing.image_dataset_from_directory».
    Пример кода:

    import tensorflow as tf
    train_dataset = tf.keras.preprocessing.image_dataset_from_directory(
    directory='path/to/train',
    labels='inferred',
    label_mode='binary',
    image_size=(224, 224),
    batch_size=32
    )
  3. Метод: загрузка изображений вручную с использованием «os» и «PIL».
    Пример кода:

    import os
    import numpy as np
    from PIL import Image
    def load_images_from_directory(directory, target_size):
    images = []
    labels = []
    for filename in os.listdir(directory):
        if filename.endswith('.jpg') or filename.endswith('.png'):
            img = Image.open(os.path.join(directory, filename))
            img = img.resize(target_size)
            img = np.array(img) / 255.0
            images.append(img)
            labels.append(filename.split('.')[0])  # Assuming image filenames are labeled accordingly
    return np.array(images), np.array(labels)
    train_images, train_labels = load_images_from_directory('path/to/train', (224, 224))

Проблему «ImportError» при попытке импортировать «image_dataset_from_directory» можно преодолеть, используя альтернативные методы для загрузки наборов данных изображений в TensorFlow. В этой статье мы рассмотрели три разных подхода, продемонстрировав примеры кода для каждого метода. Используя эти альтернативы, вы можете продолжать беспрепятственно работать с данными изображений в TensorFlow.