Machine_learning_2023/AI_brain/train.py

54 lines
1.8 KiB
Python

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)