/
preparemodel.py
72 lines (56 loc) · 2.76 KB
/
preparemodel.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
import keras
from keras.layers import Conv2D, MaxPooling2D, Input, AveragePooling2D
from keras.layers import Dropout, Flatten, Dense, GlobalAveragePooling2D
from keras.models import Sequential
from keras.optimizers import SGD
from keras.callbacks import LearningRateScheduler, ModelCheckpoint, ReduceLROnPlateau
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
# The GPU id to use, usually either "0" or "1"
os.environ["CUDA_VISIBLE_DEVICES"]="1"
print("Creating model...")
model = Sequential()
model.add(Conv2D(64, (3,3), padding='same', activation='relu', input_shape=(224,224,3)))
model.add(Conv2D(64, (3,3), padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='valid'))
#111x111x64
model.add(Conv2D(128, (1,1), padding='same', activation='relu'))
model.add(Conv2D(128, (3,3), padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='valid'))
#55x55x128
model.add(Conv2D(256, (1,1), padding='same', activation='relu'))
model.add(Conv2D(256, (3,3), padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='valid'))
#27x27x256
model.add(Conv2D(512, (1,1), padding='same', activation='relu'))
model.add(Conv2D(512, (3,3), padding='same', activation='relu'))
model.add(Conv2D(512, (5,5), padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='valid'))
#13x13x512
model.add(Conv2D(1024, (1,1), padding='same', activation='relu'))
model.add(Conv2D(1024, (3,3), padding='same', activation='relu'))
model.add(Conv2D(1024, (5,5), padding='same', activation='relu'))
#model.add(Conv2D(2048, (7,7), padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='valid'))
#6x6x1024
model.add(Conv2D(1256, (3,3), padding='same', activation='relu'))
model.add(Conv2D(1256, (1,1), padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='valid'))
#2x2x1256
model.add(AveragePooling2D(pool_size=(2,2), strides=(1,1), padding='valid'))
#1x1x1256
model.add(Flatten())
#model.add(Dense(4096, activation='relu', use_bias=True))
model.add(Dense(628, activation='relu', use_bias=True))
model.add(Dense(314, activation='relu', use_bias=True))
model.add(Dense(5, activation='softmax', use_bias=True))
print("Model created!!")
model.summary()
print("\nCompiling model...")
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sgd = SGD(momentum=0.9, nesterov=True, lr=0.003)
#callbacks = [LearningRateScheduler(8, verbose=1)]
model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])
print("Successfully compiled model!!")
model.save("WorkingModels/convnet224x224x3_untrained.h5")
print("Model saved!!")