Download MLathon.py from roshnn24/FeatherFlock_AI: direct link, hf CLI and curl.
- Browser
- Download file 3.34 kB
-
https://huggingface.co/roshnn24/FeatherFlock_AI/resolve/main/MLathon.py
- Command line
-
hf download hf://roshnn24/FeatherFlock_AI/MLathon.py
-
curl -L -o MLathon.py https://huggingface.co/roshnn24/FeatherFlock_AI/resolve/main/MLathon.py
3.34 kB
| import tensorflow as tf | |
| import os | |
| import pathlib | |
| import numpy as np | |
| data_dir = pathlib.Path("/Users/rosh/Downloads/Train_data") | |
| class_names = np.array(sorted([item.name for item in data_dir.glob("*")])) | |
| class_names = list(class_names) | |
| import matplotlib.pyplot as plt | |
| import matplotlib.image as mpimg | |
| import random | |
| def view_random_image(target_dir, target_class): | |
| target_folder = target_dir + "/" + target_class | |
| random_image = random.sample(os.listdir(target_folder), 1) | |
| img = mpimg.imread(target_folder + "/" + random_image[0]) | |
| plt.imshow(img) | |
| plt.title(target_class) | |
| plt.axis("off") | |
| print(f"Image shape: {img.shape}") | |
| plt.show() | |
| return img | |
| #img = view_random_image(target_dir="/Users/rosh/Downloads/Train_data",target_class) | |
| from tensorflow.keras.preprocessing.image import ImageDataGenerator | |
| tf.random.set_seed(42) | |
| # Define data augmentation parameters | |
| train_datagen = ImageDataGenerator( | |
| rotation_range=20, # Random rotation in the range [-20, 20] degrees | |
| width_shift_range=0.1, # Random horizontal shift by up to 10% of the width | |
| height_shift_range=0.1, # Random vertical shift by up to 10% of the height | |
| shear_range=0.2, # Shear intensity (shear angle in radians) | |
| zoom_range=0.2, # Random zoom in the range [0.8, 1.2] | |
| horizontal_flip=True, # Random horizontal flipping | |
| vertical_flip=True, # Random vertical flipping | |
| fill_mode='nearest', # Fill mode for points outside the input boundaries | |
| rescale=1./255 # Rescaling factor | |
| ) | |
| valid_datagen = ImageDataGenerator( | |
| rescale=1./255 # Rescaling factor | |
| ) | |
| train_dir = "/Users/rosh/Downloads/Train_data" | |
| valid_dir = "/Users/rosh/Downloads/Validation_data" | |
| train_data = train_datagen.flow_from_directory(directory=train_dir, | |
| batch_size=32, | |
| target_size=(224, 224), | |
| class_mode="categorical", | |
| seed=42) | |
| valid_data = valid_datagen.flow_from_directory(directory=valid_dir, | |
| batch_size=32, | |
| target_size=(224, 224), | |
| class_mode="categorical", | |
| seed=42) | |
| model_1 = tf.keras.Sequential([ | |
| tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation="relu", input_shape=(224, 224, 3)), | |
| tf.keras.layers.MaxPool2D(pool_size=2, padding="valid"), | |
| tf.keras.layers.Conv2D(64, 3, activation="relu"), | |
| tf.keras.layers.MaxPool2D(2), | |
| tf.keras.layers.Conv2D(64, 3, activation="relu"), | |
| tf.keras.layers.MaxPool2D(2), | |
| tf.keras.layers.Flatten(), | |
| tf.keras.layers.Dense(64, activation="relu"), | |
| tf.keras.layers.Dense(10, activation="softmax") | |
| ]) | |
| model_1.compile(loss=tf.keras.losses.CategoricalCrossentropy(), | |
| optimizer=tf.keras.optimizers.Adam(), | |
| metrics=["accuracy"]) | |
| history = model_1.fit(train_data, | |
| epochs=100, | |
| steps_per_epoch=len(train_data), | |
| validation_data=valid_data, | |
| validation_steps=len(valid_data), | |
| verbose=1) | |
| model_1.save("model_3.h5") | |
| # | |