Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
CHILD INTELLIGENT ASSESSMENT TOOL
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2020-046
CHILD INTELLIGENT ASSESSMENT TOOL
Commits
ac03e9c1
Commit
ac03e9c1
authored
Sep 23, 2020
by
MithilaGunasinghe
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'SCIT' of
http://gitlab.sliit.lk/2020-046/child-intelligent-assistant-tool
into SCIT
parents
b32b1050
c34f4457
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
101 deletions
+0
-101
cnn.py
cnn.py
+0
-72
visulization.py
visulization.py
+0
-29
No files found.
cnn.py
deleted
100644 → 0
View file @
b32b1050
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@author: GUnasinghe M.D.
"""
# CNN classifier
# Building architecture of our CNN classifier
import
keras
from
keras.models
import
Sequential
from
keras.layers
import
Convolution2D
from
keras.layers
import
MaxPooling2D
from
keras.layers
import
Flatten
from
keras.layers
import
Dense
# Initialising the CNN
classifier
=
Sequential
()
# Step - 1 Convolution
classifier
.
add
(
Convolution2D
(
16
,
3
,
3
,
input_shape
=
(
28
,
28
,
3
),
activation
=
'relu'
))
# Step - 2 Pooling
classifier
.
add
(
MaxPooling2D
(
pool_size
=
(
2
,
2
)))
classifier
.
add
(
Convolution2D
(
32
,
3
,
3
,
activation
=
'relu'
))
classifier
.
add
(
MaxPooling2D
(
pool_size
=
(
2
,
2
)))
# Step - 3 Flattening
classifier
.
add
(
Flatten
())
# Step - 4 Full connection -> First layer input layer then hidden layer
# and last softmax layer
classifier
.
add
(
Dense
(
56
,
activation
=
'relu'
,
kernel_initializer
=
'uniform'
))
classifier
.
add
(
Dense
(
3
,
activation
=
'softmax'
,
kernel_initializer
=
'uniform'
))
# Compiling the CNN
classifier
.
compile
(
optimizer
=
'adam'
,
loss
=
'categorical_crossentropy'
,
metrics
=
[
'accuracy'
])
# Image Preprocessing
from
keras.preprocessing.image
import
ImageDataGenerator
train_datagen
=
ImageDataGenerator
(
rescale
=
1.
/
255
,
shear_range
=
0.2
,
zoom_range
=
0.2
,
horizontal_flip
=
True
)
test_datagen
=
ImageDataGenerator
(
rescale
=
1.
/
255
)
training_set
=
train_datagen
.
flow_from_directory
(
'shapes/train'
,
target_size
=
(
28
,
28
),
batch_size
=
1
,
class_mode
=
'categorical'
)
#X_images, y_labels = training_set.filenames, training_set.classes
test_set
=
test_datagen
.
flow_from_directory
(
'shapes/test'
,
target_size
=
(
28
,
28
),
batch_size
=
1
,
class_mode
=
'categorical'
)
# Logging the training of models
from
keras.callbacks
import
CSVLogger
,
EarlyStopping
csv_logger
=
CSVLogger
(
'log.csv'
,
append
=
True
,
separator
=
';'
)
early_stopping_monitor
=
EarlyStopping
(
patience
=
5
)
steps_per_epoch
=
len
(
training_set
.
filenames
)
# 300
validation_steps
=
len
(
test_set
.
filenames
)
# 90
model_info
=
classifier
.
fit_generator
(
training_set
,
steps_per_epoch
=
steps_per_epoch
,
epochs
=
25
,
validation_data
=
test_set
,
validation_steps
=
validation_steps
,
callbacks
=
[
csv_logger
,
early_stopping_monitor
])
classifier
.
save
(
"drawing_classification.h5"
)
# plot model history after each epoch
from
visulization
import
plot_model_history
plot_model_history
(
model_info
)
visulization.py
deleted
100644 → 0
View file @
b32b1050
import
matplotlib.pyplot
as
plt
import
numpy
as
np
def
plot_model_history
(
model_history
):
fig
,
axs
=
plt
.
subplots
(
1
,
2
,
figsize
=
(
15
,
5
))
# summarize history for accuracy
axs
[
0
]
.
plot
(
range
(
1
,
len
(
model_history
.
history
[
'acc'
])
+
1
),
model_history
.
history
[
'acc'
])
axs
[
0
]
.
plot
(
range
(
1
,
len
(
model_history
.
history
[
'val_acc'
])
+
1
),
model_history
.
history
[
'val_acc'
])
axs
[
0
]
.
set_title
(
'Model Accuracy'
)
axs
[
0
]
.
set_ylabel
(
'Accuracy'
)
axs
[
0
]
.
set_xlabel
(
'Epoch'
)
axs
[
0
]
.
set_xticks
(
np
.
arange
(
1
,
len
(
model_history
.
history
[
'acc'
])
+
1
),
len
(
model_history
.
history
[
'acc'
])
/
10
)
axs
[
0
]
.
legend
([
'train'
,
'val'
],
loc
=
'best'
)
# summarize history for loss
axs
[
1
]
.
plot
(
range
(
1
,
len
(
model_history
.
history
[
'loss'
])
+
1
),
model_history
.
history
[
'loss'
])
axs
[
1
]
.
plot
(
range
(
1
,
len
(
model_history
.
history
[
'val_loss'
])
+
1
),
model_history
.
history
[
'val_loss'
])
axs
[
1
]
.
set_title
(
'Model Loss'
)
axs
[
1
]
.
set_ylabel
(
'Loss'
)
axs
[
1
]
.
set_xlabel
(
'Epoch'
)
axs
[
1
]
.
set_xticks
(
np
.
arange
(
1
,
len
(
model_history
.
history
[
'loss'
])
+
1
),
len
(
model_history
.
history
[
'loss'
])
/
10
)
axs
[
1
]
.
legend
([
'train'
,
'val'
],
loc
=
'best'
)
plt
.
show
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment