Почему четные эпохи не дают соответствующих результатов в задаче бинарной классификацииPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему четные эпохи не дают соответствующих результатов в задаче бинарной классификации

Сообщение Anonymous »

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

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

import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import tensorflow as tf
import kagglehub

data_dir = kagglehub.dataset_download("ryanholbrook/car-or-truck")

from tensorflow.keras.preprocessing.image import ImageDataGenerator

tf.random.set_seed(42)

train_datagen = ImageDataGenerator(rescale=1./255)
valid_datagen = ImageDataGenerator(rescale=1./255)

train_dir = "/root/.cache/kagglehub/datasets/ryanholbrook/car-or-truck/versions/1/train/"
test_dir = "/root/.cache/kagglehub/datasets/ryanholbrook/car-or-truck/versions/1/valid/"

train_data = train_datagen.flow_from_directory(directory = train_dir, batch_size=32, target_size=(224,224), class_mode="binary", seed=42, shuffle =True)
valid_data = valid_datagen.flow_from_directory(directory = test_dir, batch_size=32, target_size=(224,224), class_mode="binary", seed=42, shuffle =True)

model_1 = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(filters=10, kernel_size=3, input_shape=(224,224,3), activation="relu"),
tf.keras.layers.Conv2D(10,3, activation="relu"),
tf.keras.layers.MaxPool2D(pool_size=2, padding="valid"),
tf.keras.layers.Conv2D(10,3, activation="relu"),
tf.keras.layers.Conv2D(10,3, activation="relu"),
tf.keras.layers.MaxPool2D(pool_size=2, padding="valid"),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(1, activation="sigmoid")
])

# Compile our CNN
model_1.compile(loss="binary_crossentropy", optimizer=tf.keras.optimizers.Adam(), metrics=["accuracy"])

# Fit the CNN to the data
history_1 = model_1.fit(train_data, epochs=25, steps_per_epoch=len(train_data), validation_data=valid_data, validation_steps=len(valid_data))

Получение такого типа результата:
Найдено 5117 изображений, принадлежащих 2 классам.
Найдено 5051 изображение принадлежность к 2-м классам.
Эпоха 1/25
/usr/local/lib/python3.10/dist-packages/keras/src/layers/convolutional/base_conv.py:107: Предупреждение пользователя: не передавайте input_shape/

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

input_dim
аргумент слоя. При использовании последовательных моделей лучше использовать объект Input(shape) в качестве первого слоя модели.
super().init(activity_regularizer=activity_regularizer, **kwargs )
/usr/local/lib/python3.10/dist-packages/keras/src/trainers/data_adapters/py_dataset_adapter.py:122: Предупреждение пользователя: ваш класс PyDataset должен вызывать super().__init__(** kwargs) в его конструкторе. **kwargs может включать в себя рабочие, use_multiprocessing, max_queue_size. Не передавайте эти аргументы в fit(), так как они будут проигнорированы.
self._warn_if_super_not_ Called()
160/160 ━━━━━━━━━━━━━━ ━━━━━━ 18с 93 мс/шаг - точность: 0,6169 - потери: 0,6532 - val_accuracy: 0,6391 - val_loss: 0,6453
Эпоха 2/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 0 с 109 мкс/шаг - точность: 0,0000e+00 - потери: 0,0000e+00
Эпоха 25 марта
/usr/lib/python3.10/contextlib.py:153: Предупреждение пользователя: на входе закончились данные; прерывание тренировки. Убедитесь, что ваш набор данных или генератор может генерировать пакеты как минимум шагов_на_епоху * эпох. Возможно, вам придется использовать функцию .repeat() при построении набора данных.
self.gen.throw(typ, value, Traceback)
160/160 ━━━━━━━ ━━━━━━━━━━━━━ 17с 80 мс/шаг - точность: 0,6780 - потери: 0,5921 - val_accuracy: 0,7020 - val_loss: 0,5711
Эпоха 4/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 4 с 26 мс/шаг - точность: 0,0000e+00 - потери: 0,0000e+00
Эпоха 25 мая
160/160 ━━━━━━━━━━━━━━━━━━━━ 13 с 81 мс/шаг - точность: 0,7679 - потери: 0,4824 - val_accuracy: 0,7193 - val_loss: 0.5556
Эпоха 6/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 4с 25мс/шаг - точность: 0.0000e+00 - потеря: 0.0000e+00
Эпоха 7/25
160/160 ━━━━━━━━━━━━━━━━━ ━━━ 18 с. 88 мс/шаг - точность: 0,8320 - потери: 0,3964 - val_accuracy: 0,7242 - val_loss: 0,5764
Эпоха 8/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 4 с 25 мс/шаг - точность: 0,0000e+00 - потери: 0,0000e+00
Эпоха 25 сентября
160/160 ━━━━━━━━━━━━━━━━━━━━ 15 с 78 мс/шаг - точность: 0,8764 - потери: 0,3101 - val_accuracy: 0,6995 - val_loss: 0.6768
Эпоха 10/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 0 с 93 мкс/шаг - точность: 0.0000e+00 - потеря: 0.0000e+00
Эпоха 11/25
160/160 ━━━━━━━━━━━━━━━━━ ━━━ 13 с. 80 мс/шаг - точность: 0,9233 - потери: 0,2111 - val_accuracy: 0,7145 - val_loss: 0,7014
Эпоха 12/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 0 с 97 мкс/шаг - точность: 0,0000e+00 - потери: 0,0000e+00
Эпоха 25.13
160/160 ━━━━━━━━━━━━━━━━━━━━ 13 с 77 мс/шаг - точность: 0,9491 - потери: 0,1485 - val_accuracy: 0,7123 - val_loss: 0.8927
Эпоха 14/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 5с 31мс/шаг - точность: 0.0000e+00 - потеря: 0.0000e+00
Эпоха 15/25
160/160 ━━━━━━━━━━━━━━━━━ ━━━ 16 с. 82 мс/шаг - точность: 0,9814 - потери: 0,0733 - val_accuracy: 0,7104 - val_loss: 1,1305
Эпоха 16/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 0 с 71 мкс/шаг - точность: 0,0000e+00 - потери: 0,0000e+00
Эпоха 25.17
160/160 ━━━━━━━━━━━━━━━━━━━━ 20 с 80 мс/шаг - точность: 0,9903 - потери: 0,0431 - val_accuracy: 0,7143 - val_loss: 1.3878
Эпоха 18/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 0 с 98 мкс/шаг - точность: 0.0000e+00 - потеря: 0.0000e+00
Эпоха 19/25
160/160 ━━━━━━━━━━━━━━━━━ ━━━ 20 с. 80 мс/шаг - точность: 0,9915 - потери: 0,0323 - val_accuracy: 0,7165 - val_loss: 1,5466
Эпоха 20/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 4 с 26 мс/шаг - точность: 0,0000e+00 - потери: 0,0000e+00
Эпоха 21/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 15 с 75 мс/шаг - точность: 0,9967 - потери: 0,0177 - val_accuracy: 0,7058 - val_loss: 1.6167
Эпоха 22/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 0 с 144 мкс/шаг - точность: 0.0000e+00 - потеря: 0.0000e+00
Эпоха 23/25
160/160 ━━━━━━━━━━━━━━━━━ ━━━ 21с 79 мс/шаг - точность: 0,9939 - потери: 0,0196 - val_accuracy: 0,7111 - val_loss: 1,7555
Эпоха 24/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 0 с 97 мкс/шаг - точность: 0,0000e+00 - потеря: 0,0000e+00
Эпоха 25/25
160/160 ━━━━━━━━━━━━━━━━━━━━ 15 с 90 мс/шаг - точность: 0,9942 - потери: 0,0211 - val_accuracy: 0,7076 - val_loss: 1,9112

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

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

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

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

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

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

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