Генератор Tensorflow Keras выдал элемент, который не соответствует ожидаемой структуре – какую структуру он ожидает?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Генератор Tensorflow Keras выдал элемент, который не соответствует ожидаемой структуре – какую структуру он ожидает?

Сообщение Anonymous »

Я пытаюсь создать сеть классификации изображений с помощью тензорного потока keras. У меня есть каталог с подкаталогами label_0 и label_1

Код: Выделить всё

def load_data(image_dir, img_size=(128, 128), batch_size=32):
"""
Load the dataset using ImageDataGenerator from the directories.
"""
# Create an ImageDataGenerator for rescaling the images and data augmentation
train_datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)

# Load training data from directories
train_generator = train_datagen.flow_from_directory(
image_dir,
target_size=img_size,
batch_size=batch_size,
class_mode='binary'
)

# Load validation data from directories
validation_generator = train_datagen.flow_from_directory(
image_dir,
target_size=img_size,
batch_size=batch_size,
class_mode='binary'
)

return train_generator, validation_generator
и я создаю модель с помощью

Код: Выделить всё

def build_cnn(input_shape=(128, 128, 3)):
"""
Build a simple CNN model.
"""
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=input_shape),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Conv2D(128, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
return model
Теперь обучение работает нормально:

Код: Выделить всё

train_generator, validation_generator = CNN.load_data(image_dir)
# Build the model
model = CNN.build_cnn()
model.summary()
# Train the model
history = model.fit(
train_generator,
epochs=10,
validation_data=validation_generator
)
но когда я пытаюсь загрузить необученные данные в другой подкаталог to_test:

Код: Выделить всё

def load_unlabeled_data(to_test_dir, img_size=(128, 128)):
"""
Load the unlabeled images for prediction.
"""
test_datagen = ImageDataGenerator(rescale=1./255)

test_generator = test_datagen.flow_from_directory(
to_test_dir,
target_size=img_size,
batch_size=1,
class_mode=None,  # No labels for test data
shuffle=False
)

return test_generator
и вызов

Код: Выделить всё

test_generator = CNN.load_unlabeled_data(to_test_dir)

predictions = model.predict(test_generator)
Я получаю сообщение об ошибке

Код: Выделить всё

TypeError: `generator` yielded an element that did not match the expected structure. The expected structure was (tf.float32,), but the yielded element was [[[[1. 1. 1.]    [1. 1. 1.]    [1. 1. 1.]    ...   [1. 1. 1.]    [1. 1. 1.]    [1. 1. 1.]]

[[1. 1. 1.]    [1. 1. 1.]    [1. 1. 1.]    ...    [1. 1. 1.]    [1.
1. 1.]    [1. 1. 1.]]

[[1. 1. 1.]    [1. 1. 1.]    [1. 1. 1.]    ...    [1. 1. 1.]    [1.
1. 1.]    [1. 1. 1.]]

...

[[1. 1. 1.]    [1. 1. 1.]    [1. 1. 1.]    ...    [1. 1. 1.]    [1.
1. 1.]    [1. 1. 1.]]

[[1. 1. 1.]    [1. 1. 1.]    [1. 1. 1.]    ...    [1. 1. 1.]    [1.
1. 1.]    [1. 1. 1.]]

[[1. 1. 1.]    [1. 1. 1.]    [1. 1. 1.]    ...    [1. 1. 1.]    [1.
1. 1.]    [1. 1. 1.]]]].
Я даже не знаю, с чего начать, и не нашел никакой подобной ошибки или, по крайней мере, ничего похожего на мой случай. Что я могу сделать?

Подробнее здесь: https://stackoverflow.com/questions/790 ... xpected-st
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»