from tensorflow.keras.utils import get_file import tensorflow as tf from keras_tuner import RandomSearch from keras_tuner import Objective from src.preprocessing import delete_corrupted_image from src.draw import visualize_data from src.preprocessing import get_data_augmentation from src.models import MakeHyperModel from src.config import DATASET_URL from src.config import CACHE_DIR from src.config import CACHE_SUBDIR from src.config import DATASET_PATH from src.config import IMAGE_SIZE from src.config import BATCH_SIZE from src.config import EPOCHS get_file(origin=DATASET_URL, extract=True, cache_dir=CACHE_DIR, cache_subdir=CACHE_SUBDIR) print(delete_corrupted_image(DATASET_PATH, ('Cat', 'Dog'))) train_ds = tf.keras.preprocessing.image_dataset_from_directory( DATASET_PATH, validation_split=0.2, subset='training', seed=1337, image_size=IMAGE_SIZE, batch_size=BATCH_SIZE ) val_ds = tf.keras.preprocessing.image_dataset_from_directory( DATASET_PATH, validation_split=0.2, subset='validation', seed=1337, image_size=IMAGE_SIZE, batch_size=BATCH_SIZE ) train_ds = train_ds.prefetch(buffer_size=BATCH_SIZE) val_ds = val_ds.prefetch(buffer_size=BATCH_SIZE) data_augmentation = get_data_augmentation() visualize_data(train_ds, data_augmentation=data_augmentation) hypermodel = MakeHyperModel(input_shape=IMAGE_SIZE + (3,), num_classes=2, data_augmentation=data_augmentation) tuner = RandomSearch( hypermodel, objective=Objective("val_accuracy", direction="max"), max_trials=3, executions_per_trial=2, overwrite=True, directory='tuner_model', project_name='cat-vs-dog' ) tuner.search_space_summary() tuner.search(train_ds, epochs=EPOCHS, validation_data=val_ds) tuner.get_best_hyperparameters()