Switch to unified view

a b/training-models/cnn-model.py
1
# importing dependencies
2
import tensorflow as tf
3
from tensorflow.keras.models import Sequential
4
from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Dropout, Flatten
5
from tensorflow.keras.preprocessing.image import ImageDataGenerator
6
7
# training and testing dataset directories path
8
TRAIN_DATA_PATH = 'X-ray Images/train'
9
TEST_DATA_PATH = 'X-ray Images/test'
10
VALID_DATA_Path = 'X-ray Images/validation'
11
# cnn-model architecture
12
model = Sequential()
13
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)))
14
model.add(MaxPooling2D((2, 2)))
15
model.add(Conv2D(64, (3, 3), activation='relu'))
16
model.add(MaxPooling2D((2, 2)))
17
model.add(Conv2D(128, (3, 3), activation='relu'))
18
model.add(MaxPooling2D((2, 2)))
19
model.add(Flatten())
20
model.add(Dense(128, activation='relu'))
21
model.add(Dropout(0.5))
22
model.add(Dense(3, activation='softmax'))
23
24
# compiling the model
25
model.compile(optimizer='adam',
26
              loss='categorical_crossentropy',
27
              metrics=['accuracy'])
28
29
# data preprocessing
30
train_datagen = ImageDataGenerator(rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
31
test_datagen = ImageDataGenerator(rescale=1./255)
32
33
training_set = train_datagen.flow_from_directory(TRAIN_DATA_PATH, target_size=(224, 224), batch_size=32, class_mode='categorical')
34
validation_set = test_datagen.flow_from_directory(VALID_DATA_Path, target_size=(224, 224), batch_size=32, class_mode='categorical')
35
36
# Train the model
37
history = model.fit(training_set, epochs=10, validation_data=validation_set)
38