Я обучаю модель CNN, используя ImageDatagerator с набором данных из 1500 обучающих изображений и 32 размера партии. Я рассчитал шаги на эпоху как
⌈1500/32⌉=47, последняя партия неполна, и я использую flow_from_directory () для загрузки изображений. Однако после первой эпохи модель показывает потерю 0 и 0 точность для определенных эпох, а обучение прерывается с предупреждением: < /p>
userwarning: ваш ввод закончился данных; прерывание обучения. Убедитесь, что ваш набор данных или генератор может генерировать как минимум steps_per_epoch * epochs партии. Вам может потребоваться использовать функцию .repeat () при создании вашего набора данных.train_datagen = ImageDataGenerator(rescale=1./255)
valid_datagen = ImageDataGenerator(rescale=1./255)
# Import data from directories and turn it into batches
train_data = train_datagen.flow_from_directory(train_path,
batch_size=32,
target_size=(224, 224),
class_mode="binary")
valid_data = valid_datagen.flow_from_directory(test_path,
batch_size=32,
target_size=(224, 224),
class_mode="binary")
tf.random.set_seed(42)
model_1 = tf.keras.models.Sequential([
Input(shape=(224, 224, 3)),
Conv2D(filters=10,
kernel_size=3,
strides=1,
padding='valid',
activation='relu'),
Conv2D(10, 3, activation='relu'),
Conv2D(10, 3, activation='relu'),
Flatten(),
Dense(1, activation='sigmoid')
])
model_1.compile(loss="binary_crossentropy",
optimizer=tf.keras.optimizers.Adam(),
metrics=["accuracy"])
history_1 = model_1.fit(train_data,
epochs=5,
steps_per_epoch=len(train_data),
validation_data=valid_data,
validation_steps=len(valid_data))
< /code>
log вывода: < /p>
Epoch 1/5
/usr/local/lib/python3.11/dist-packages/keras/src/trainers/data_adapters/py_dataset_adapter.py:122: UserWarning: Your `PyDataset` class should call `super().__init__(**kwargs)` in its constructor. `**kwargs` can include `workers`, `use_multiprocessing`, `max_queue_size`. Do not pass these arguments to `fit()`, as they will be ignored.
self._warn_if_super_not_called()
47/47 ━━━━━━━━━━━━━━━━━━━━ 767s 14s/step - accuracy: 0.6488 - loss: 0.6197 - val_accuracy: 0.7620 - val_loss: 0.4793
Epoch 2/5
47/47 ━━━━━━━━━━━━━━━━━━━━ 0s 426us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00
Epoch 3/5
/usr/lib/python3.11/contextlib.py:158: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
self.gen.throw(typ, value, traceback)
47/47 ━━━━━━━━━━━━━━━━━━━━ 48s 224ms/step - accuracy: 0.8120 - loss: 0.4131 - val_accuracy: 0.8600 - val_loss: 0.3441
Epoch 4/5
47/47 ━━━━━━━━━━━━━━━━━━━━ 3s 54ms/step - accuracy: 0.0000e+00 - loss: 0.0000e+00
Epoch 5/5
47/47 ━━━━━━━━━━━━━━━━━━━━ 11s 219ms/step - accuracy: 0.8336 - loss: 0.3814 - val_accuracy: 0.8880 - val_loss: 0.3042
Подробнее здесь: https://stackoverflow.com/questions/793 ... s-accuracy
Проблема обучения кераса: «В вашем вводе не хватает предупреждения данных» и 0 потерь/точность ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
Мобильная версия