seafox311

CNN

Apr 18th, 2024
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. import os
  2.  
  3. os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
  4.  
  5. import tensorflow as tf
  6. import numpy as np
  7. import matplotlib.pyplot as plt
  8. from tensorflow import keras
  9. from tensorflow.keras import layers
  10.  
  11.  
  12.  
  13. from keras.src.utils import image_dataset_from_directory
  14.  
  15. train_dataset = image_dataset_from_directory(
  16. "C:/Users/laure/code/pycharmProjects/BirdDataset/train",
  17. image_size=(224, 224),
  18. batch_size=32)
  19. test_dataset = image_dataset_from_directory(
  20. "C:/Users/laure/code/pycharmProjects/BirdDataset/test",
  21. image_size=(224, 224),
  22. batch_size=32)
  23. validata = image_dataset_from_directory(
  24. "C:/Users/laure/code/pycharmProjects/BirdDataset/valid",
  25. image_size=(224, 224),
  26. batch_size=32)
  27.  
  28. class_names = train_dataset.class_names
  29. print(class_names)
  30.  
  31. data_augmentation = keras.Sequential(
  32. [
  33. layers.RandomFlip("horizontal"),
  34. layers.RandomRotation(0.2),
  35. layers.RandomZoom(0.4),
  36. ]
  37. )
  38.  
  39. img_size = (224, 224)
  40.  
  41. inputs = keras.Input(shape=(224, 224, 3))
  42. x = data_augmentation(inputs)
  43. x = layers.Rescaling(1./255)(inputs)
  44.  
  45. x = layers.BatchNormalization()(x)
  46. x = layers.Conv2D(filters=32, kernel_size=3, activation="relu")(x)
  47. x = layers.MaxPooling2D(pool_size=2, padding="same")(x)
  48.  
  49. x = layers.BatchNormalization()(x)
  50. x = layers.Conv2D(filters=64, kernel_size=3, activation="relu")(x)
  51. x = layers.MaxPooling2D(pool_size=2, padding="same")(x)
  52.  
  53. x = layers.BatchNormalization()(x)
  54. x = layers.Conv2D(filters=128, kernel_size=3, activation="relu")(x)
  55. x = layers.MaxPooling2D(pool_size=2, padding="same")(x)
  56.  
  57. x = layers.BatchNormalization()(x)
  58. x = layers.Conv2D(filters=256, kernel_size=3, activation="relu")(x)
  59. x = layers.MaxPooling2D(pool_size=2, padding="same")(x)
  60.  
  61. x = layers.BatchNormalization()(x)
  62. x = layers.Conv2D(filters=256, kernel_size=3, activation="relu")(x)
  63. x = layers.GlobalAveragePooling2D()(x)
  64.  
  65. x = layers.Dropout(0.5)(x)
  66. outputs = layers.Dense(525, activation="softmax")(x)
  67. model = keras.Model(inputs=inputs, outputs=outputs)
  68. model.summary()
  69.  
  70. model.compile(loss="sparse_categorical_crossentropy",
  71. optimizer="adam",
  72. metrics=["accuracy"])
  73.  
  74. callbacks = [
  75. keras.callbacks.ModelCheckpoint(
  76. filepath="bird525.keras",
  77. save_best_only=True,
  78. monitor="val_loss")]
  79.  
  80. history = model.fit(
  81. train_dataset,
  82. epochs=20,
  83. validation_data=validata,
  84. callbacks=callbacks)
  85.  
  86.  
Advertisement
Add Comment
Please, Sign In to add comment