У меня есть папка, разделенная на Train, Val и Test. поезд содержит около 4262 изображений из 4 подпапок, val содержит 915 изображений из 4 подпапок и тест 913 из 4 подпапок. Я выполнил процесс увеличения, прежде чем разделить изображения и обобщить каждое изображение на 35 копий, затем я разделил его вручную в зависимости от разделенных наборов 70/30, где 15% для значения и 15% для теста. Я использовал модель VGG16 для классификации четырех документов. результаты обучения составляют примерно 96%, и это последний результат, которого достигает модель
134/134 [==============================] - 96s 717ms/step -
loss: 0.0311 - accuracy: 0.9916 - val_loss: 1.8162 - val_accuracy: 0.5694
Почему разрыв слишком велик и в чем проблема? Как мне добиться хотя бы 89%?
Я уже пробовал снижать скорость обучения, увеличивать и уменьшать слой отсева, использовать пакетную нормализацию, увеличивать эпохи. Мне нужна помощь, чтобы проанализировать и указать, с какой проблемой я столкнулся.
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten, BatchNormalization
from tensorflow.keras.applications import VGG16
from tensorflow.keras.optimizers import Adam
from tensorflow.keras import regularizers
# Define the directory paths
base_dir = '/content/dataset/rose_edit'
train_dir = f"{base_dir}/train"
val_dir = f"{base_dir}/val"
test_dir = f"{base_dir}/test"
# Load the datasets
train_dataset = tf.keras.preprocessing.image_dataset_from_directory(
train_dir,
image_size=(224, 224), # VGG16 expects 224x224 images
batch_size=32,
label_mode='categorical' # Use categorical for multi-class classification
)
val_dataset = tf.keras.preprocessing.image_dataset_from_directory(
val_dir,
image_size=(224, 224),
batch_size=32,
label_mode='categorical'
)
test_dataset = tf.keras.preprocessing.image_dataset_from_directory(
test_dir,
image_size=(224, 224),
batch_size=32,
label_mode='categorical'
)
# Initialize VGG16 base model without the top layers and freeze its layers
vgg_base = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
vgg_base.trainable = False # Freezing VGG16 layers
# Building the model
model = Sequential()
model.add(vgg_base)
model.add(Flatten()) # Flatten output from VGG16 for dense layers
# Custom dense layers with L2 regularization
model.add(Dense(256, activation='relu', kernel_regularizer=regularizers.l2(0.001)))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(Dense(64, activation='relu', kernel_regularizer=regularizers.l2(0.001)))
model.add(Dropout(0.5))
model.add(BatchNormalization())
# Output layer (4 classes with softmax)
model.add(Dense(4, activation='softmax'))
# Compile the model
model.compile(optimizer=Adam(learning_rate=0.0001),
loss='categorical_crossentropy',
metrics=['accuracy'])
# Model summary
model.summary()
# Train the model
history = model.fit(
train_dataset,
validation_data=val_dataset,
epochs=11, # Adjust the number of epochs based on your needs
)
# Evaluate the model on the test dataset
test_loss, test_accuracy = model.evaluate(test_dataset)
print(f"Test Accuracy: {test_accuracy * 100:.2f}%")
Подробнее здесь: https://stackoverflow.com/questions/790 ... test-accur
Я использовал все варианты, предложенные разработчиком ML, но хочу знать, ПОЧЕМУ точность теста слишком низкая по сравне ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Рассчитайте точность, полноту, точность и сбалансированную точность из матрицы путаницы.
Anonymous » » в форуме Python - 0 Ответы
- 38 Просмотры
-
Последнее сообщение Anonymous
-