-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcnn-pred-v2.py
74 lines (58 loc) · 2.57 KB
/
cnn-pred-v2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Convolutional Neural Network
# Part 1 - Building the CNN
# Importing the Keras libraries and packages
from keras.models import Sequential
from keras.layers import Conv2D, Dropout, BatchNormalization
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
from keras.callbacks import ReduceLROnPlateau
from PIL import Image, ImageFile
# Initialising the CNN
classifier = Sequential()
# Step 1 - Convolution
classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
# Step 2 - Pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(BatchNormalization())
# Adding a second convolutional layer
classifier.add(Conv2D(32, (3, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Conv2D(32, (3,3), activation = 'sigmoid'))
classifier.add(MaxPooling2D(pool_size = (2,2)))
# Step 3 - Flattening
classifier.add(Flatten())
# Step 4 - Full connection
classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dropout(0.4))
classifier.add(Dense(units = 1, activation = 'sigmoid'))
# Compiling the CNN
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
# Part 2 - Fitting the CNN to the images
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale = 1./255,
zoom_range = 0.2,
horizontal_flip = False)
valid_datagen = ImageDataGenerator(rescale = 1./255)
ImageFile.LOAD_TRUNCATED_IMAGES = True
training_set = train_datagen.flow_from_directory('Dataset/Training',
target_size = (64, 64),
batch_size = 32,
class_mode = 'binary')
valid_set = valid_datagen.flow_from_directory('Dataset/Testing',
target_size = (64, 64),
batch_size = 32,
class_mode = 'binary')
classifier.fit_generator(training_set,
steps_per_epoch = 5,
epochs = 200,
validation_data = valid_set,
validation_steps = 6)
#Part 3 - Save Model
from keras.models import model_from_json
classifier.save("Model.h5");
model_json = classifier.to_json()
with open("cnn_3Conv_v1.json", "w") as json_file:
json_file.write(model_json)
# serialize weights to HDF5
classifier.save_weights("cnn_3COnv_v1.h5")