-
Notifications
You must be signed in to change notification settings - Fork 1
/
lenet.py
42 lines (34 loc) · 1.12 KB
/
lenet.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
from keras.models import Sequential
from keras.layers.convolutional import Conv2D
from keras.layers.core import Activation
from keras.layers.core import Flatten
from keras.layers.core import Dense
from keras.layers.convolutional import MaxPooling2D
from keras import backend as K
class LeNet:
@staticmethod
def build(width, height, depth, classes):
# initialize omdel
model = Sequential()
inputShape = (height, width, depth)
#if channel first, update input shape
if K.image_data_format() == "channels_first":
inputShape = (depth, height, width)
#first layer conv-relu-pool
model.add(Conv2D(20, (5, 5), padding="same",
input_shape=inputShape))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
#second layer conv-relu-pool
model.add(Conv2D(50, (5, 5), padding="same"))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
#fc-relu
model.add(Flatten())
model.add(Dense(500))
model.add(Activation("relu"))
# softmax classifier
model.add(Dense(classes))
model.add(Activation("softmax"))
# return the network
return model