import numpy as np import tensorflow as tf from tensorflow import keras def norm_pix(image, label): return image / 255, label directoryTRAIN = "D:/Image_dataset/Image_datasetJPGnewBnW/Image_datasetJPGnewBnW/train" directoryVALIDATION = "D:/Image_dataset/Image_datasetJPGnewBnW/Image_datasetJPGnewBnW/validation" train_ds = tf.keras.utils.image_dataset_from_directory(directoryTRAIN, seed=123, batch_size=16, image_size=(200, 200), color_mode='rgb')#color_mode='grayscale') val_ds = tf.keras.utils.image_dataset_from_directory(directoryVALIDATION, seed=123, batch_size=16, image_size=(200, 200), color_mode='rgb')#color_mode='grayscale') train_ds = train_ds.map(norm_pix) val_ds = val_ds.map(norm_pix) model = keras.Sequential([ #keras.layers.Conv2D(64, (3, 3), activation='relu', input_shape=(200, 200, 1)), keras.layers.Conv2D(64, (3, 3), activation='relu', input_shape=(200, 200, 3)), keras.layers.MaxPool2D((2, 2)), keras.layers.Conv2D(128, (3, 3), activation='relu'), keras.layers.MaxPool2D((2, 2)), keras.layers.Conv2D(256, (3, 3), activation='relu'), keras.layers.MaxPool2D((2, 2)), keras.layers.Flatten(), keras.layers.Dense(1024, activation='relu'), keras.layers.Dense(4, activation='softmax') ]) print(model.summary()) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) trainHistory = model.fit(train_ds, epochs=8, validation_data=val_ds) #model.save("model.h5") model.save("model_color.h5") (loss, accuracy) = model.evaluate(val_ds) print(loss) print(accuracy)