Влияет ли тот факт, что я только что тренируюсь, тестируется с использованием keras image_from_dataset на мои метрикиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Влияет ли тот факт, что я только что тренируюсь, тестируется с использованием keras image_from_dataset на мои метрики

Сообщение Anonymous »

Я пытался выяснить, почему мои метрики были низкими после тренировки. У меня был оценка F1 75%, что я не ожидал вообще. Я рассмотрел код, и я подозревал, что проблема была поездом, валидационным разделением, а также тем фактом, что я оценивал модель по набору валидации y_pred = (model.predict (val_ds)> 0,5) .Astype (int) . Я прочитал документацию «Керас», чтобы увидеть, сделал ли я ошибки или был способ разделить мой набор данных на поезд, проверка, разделение тестирования, но я не нашел ничего, что могло бы указать, если я допустил ошибку. Вот мой код: < /p>

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

import tensorflow as tf
from tensorflow.keras.applications import DenseNet169
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D, RandomFlip, RandomRotation, Dropout
from tensorflow.keras.models import Model, Sequential
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.regularizers import l2
from tensorflow.keras.applications.densenet import preprocess_input
from sklearn.metrics import confusion_matrix, f1_score
import numpy as np

# Define constants
IMG_SIZE = (224, 224)  # Match DenseNet169 input size
BATCH_SIZE = 32
EPOCHS = 15
DATA_DIR = "colon_images"
CLASS_NAMES = ["cancerous", "normal"]
SPLIT_RATIO = 0.2

# Load datasets directly at 224x224
def create_dataset(subset):
return tf.keras.utils.image_dataset_from_directory(
DATA_DIR,
validation_split=SPLIT_RATIO,
subset=subset,
seed=42,
image_size=IMG_SIZE,  # Directly load at target size
batch_size=BATCH_SIZE,
label_mode='binary'
)

train_ds = create_dataset("training")
val_ds = create_dataset("validation")

# Preprocessing with augmentation (augmentations only active during training)
preprocessing = Sequential([
RandomFlip("horizontal"),
RandomRotation(0.1),
tf.keras.layers.Lambda(preprocess_input)  # Correct normalization
])

# Build model
base_model = DenseNet169(
weights='imagenet',
include_top=False,
input_shape=IMG_SIZE + (3,)
)

inputs = tf.keras.Input(shape=IMG_SIZE + (3,))
x = preprocessing(inputs)
x = base_model(x)
x = GlobalAveragePooling2D()(x)
x = Dense(512, activation='relu', kernel_regularizer=l2(0.01))(x)
x = Dropout(0.5)(x)  # Regularization
outputs = Dense(1, activation='sigmoid')(x)
model = Model(inputs, outputs)

# Phase 1: Train top layers
base_model.trainable = False
model.compile(
optimizer=Adam(1e-3),
loss='binary_crossentropy',
metrics=['accuracy', tf.keras.metrics.AUC(name='auc'),
tf.keras.metrics.Precision(name='precision'),
tf.keras.metrics.Recall(name='recall')]
)

# Train with callbacks monitoring AUC
early_stop = tf.keras.callbacks.EarlyStopping(
monitor='val_auc', patience=3, mode='max', verbose=1
)
checkpoint = tf.keras.callbacks.ModelCheckpoint(
'best_model.h5', save_best_only=True, monitor='val_auc', mode='max'
)

history = model.fit(
train_ds,
validation_data=val_ds,
epochs=EPOCHS,
callbacks=[early_stop, checkpoint]
)

# Phase 2: Fine-tune entire model
base_model.trainable = True
model.compile(
optimizer=Adam(1e-5),  # Very low learning rate
loss='binary_crossentropy',
metrics=['accuracy', tf.keras.metrics.AUC(name='auc')]
)

history_fine = model.fit(
train_ds,
validation_data=val_ds,
epochs=EPOCHS,
initial_epoch=history.epoch[-1],
callbacks=[early_stop, checkpoint]
)

# Evaluation
y_pred = (model.predict(val_ds) > 0.5).astype(int)
y_true = np.concatenate([y for _, y in val_ds], axis=0)

print(f"F1 Score: {f1_score(y_true, y_pred):.3f}")
`

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

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

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

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

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

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

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