Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
- import tensorflow as tf
- import numpy as np
- import matplotlib.pyplot as plt
- from tensorflow import keras
- from tensorflow.keras import layers
- from keras.src.utils import image_dataset_from_directory
- train_dataset = image_dataset_from_directory(
- "C:/Users/laure/code/pycharmProjects/BirdDataset/train",
- image_size=(224, 224),
- batch_size=32)
- test_dataset = image_dataset_from_directory(
- "C:/Users/laure/code/pycharmProjects/BirdDataset/test",
- image_size=(224, 224),
- batch_size=32)
- validata = image_dataset_from_directory(
- "C:/Users/laure/code/pycharmProjects/BirdDataset/valid",
- image_size=(224, 224),
- batch_size=32)
- class_names = train_dataset.class_names
- print(class_names)
- data_augmentation = keras.Sequential(
- [
- layers.RandomFlip("horizontal"),
- layers.RandomRotation(0.2),
- layers.RandomZoom(0.4),
- ]
- )
- img_size = (224, 224)
- inputs = keras.Input(shape=(224, 224, 3))
- x = data_augmentation(inputs)
- x = layers.Rescaling(1./255)(inputs)
- x = layers.BatchNormalization()(x)
- x = layers.Conv2D(filters=32, kernel_size=3, activation="relu")(x)
- x = layers.MaxPooling2D(pool_size=2, padding="same")(x)
- x = layers.BatchNormalization()(x)
- x = layers.Conv2D(filters=64, kernel_size=3, activation="relu")(x)
- x = layers.MaxPooling2D(pool_size=2, padding="same")(x)
- x = layers.BatchNormalization()(x)
- x = layers.Conv2D(filters=128, kernel_size=3, activation="relu")(x)
- x = layers.MaxPooling2D(pool_size=2, padding="same")(x)
- x = layers.BatchNormalization()(x)
- x = layers.Conv2D(filters=256, kernel_size=3, activation="relu")(x)
- x = layers.MaxPooling2D(pool_size=2, padding="same")(x)
- x = layers.BatchNormalization()(x)
- x = layers.Conv2D(filters=256, kernel_size=3, activation="relu")(x)
- x = layers.GlobalAveragePooling2D()(x)
- x = layers.Dropout(0.5)(x)
- outputs = layers.Dense(525, activation="softmax")(x)
- model = keras.Model(inputs=inputs, outputs=outputs)
- model.summary()
- model.compile(loss="sparse_categorical_crossentropy",
- optimizer="adam",
- metrics=["accuracy"])
- callbacks = [
- keras.callbacks.ModelCheckpoint(
- filepath="bird525.keras",
- save_best_only=True,
- monitor="val_loss")]
- history = model.fit(
- train_dataset,
- epochs=20,
- validation_data=validata,
- callbacks=callbacks)
Advertisement
Add Comment
Please, Sign In to add comment