forked from xiaochus/TrafficFlowPrediction
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodel.py
93 lines (72 loc) · 2.37 KB
/
model.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
"""
Defination of NN model
"""
from keras.layers import Dense, Dropout, Activation
from keras.layers.recurrent import LSTM, GRU
from keras.models import Sequential
def get_lstm(units):
"""LSTM(Long Short-Term Memory)
Build LSTM Model.
# Arguments
units: List(int), number of input, output and hidden units.
# Returns
model: Model, nn model.
"""
model = Sequential()
model.add(LSTM(units[1], input_shape=(units[0], 1), return_sequences=True))
model.add(LSTM(units[2]))
model.add(Dropout(0.2))
model.add(Dense(units[3], activation='sigmoid'))
return model
def get_gru(units):
"""GRU(Gated Recurrent Unit)
Build GRU Model.
# Arguments
units: List(int), number of input, output and hidden units.
# Returns
model: Model, nn model.
"""
model = Sequential()
model.add(GRU(units[1], input_shape=(units[0], 1), return_sequences=True))
model.add(GRU(units[2]))
model.add(Dropout(0.2))
model.add(Dense(units[3], activation='sigmoid'))
return model
def _get_sae(inputs, hidden, output):
"""SAE(Auto-Encoders)
Build SAE Model.
# Arguments
inputs: Integer, number of input units.
hidden: Integer, number of hidden units.
output: Integer, number of output units.
# Returns
model: Model, nn model.
"""
model = Sequential()
model.add(Dense(hidden, input_dim=inputs, name='hidden'))
model.add(Activation('sigmoid'))
model.add(Dropout(0.2))
model.add(Dense(output, activation='sigmoid'))
return model
def get_saes(layers):
"""SAEs(Stacked Auto-Encoders)
Build SAEs Model.
# Arguments
layers: List(int), number of input, output and hidden units.
# Returns
models: List(Model), List of SAE and SAEs.
"""
sae1 = _get_sae(layers[0], layers[1], layers[-1])
sae2 = _get_sae(layers[1], layers[2], layers[-1])
sae3 = _get_sae(layers[2], layers[3], layers[-1])
saes = Sequential()
saes.add(Dense(layers[1], input_dim=layers[0], name='hidden1'))
saes.add(Activation('sigmoid'))
saes.add(Dense(layers[2], name='hidden2'))
saes.add(Activation('sigmoid'))
saes.add(Dense(layers[3], name='hidden3'))
saes.add(Activation('sigmoid'))
saes.add(Dropout(0.2))
saes.add(Dense(layers[4], activation='sigmoid'))
models = [sae1, sae2, sae3, saes]
return models