I am using CNN to train a dataset of grayscale images (5 classes). The images are of size (100,100) and the pixel value is between 0-1 code :
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import tensorflow as tf
import cv2
train = ImageDataGenerator(rescale=(100,100,1))
validation = ImageDataGenerator(rescale=(100,100,1))
train_dataset = train.flow_from_directory('C:/Users/abdul/OneDrive/Desktop/New folder/FYP/final/images/train',color_mode='grayscale')
validate_dataset = validation.flow_from_directory('C:/Users/abdul/OneDrive/Desktop/New folder/FYP/final/images/validate',color_mode='grayscale')
model = tf.keras.models.Sequential([
#convolutional layer
tf.keras.layers.Conv2D(32,(3,3), activation ="relu", input_shape = (100,100,1)),
# Flatten units
tf.keras.layers.Flatten(),
# Add a hidden layer with dropout
tf.keras.layers.Dense(128, activation="relu"),
tf.keras.layers.Dropout(0.5),
# Add an output layer with output units for all 10 digits
tf.keras.layers.Dense(4, activation="softmax")
])
# Train neural network
model.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)
model.fit(train_dataset, epochs=10,validation_data = validate_dataset)