-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcustom.py
More file actions
executable file
·78 lines (67 loc) · 2.51 KB
/
custom.py
File metadata and controls
executable file
·78 lines (67 loc) · 2.51 KB
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
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import TimeDistributed
from keras.layers import Flatten
from keras.layers.convolutional import Conv1D
from keras.layers.convolutional import MaxPooling1D
class Data_Obj():
def __init__(self, input_data = [[]], output_data = []):
self.in_data = input_data
self.out_data = output_data
def data_func(raw_data):
# Data Manipulation (CNN+LSTM)
keras_X = []
keras_Y = []
temp = []
filter_size = 3
for data in raw_data:
temp.append(np.asmatrix(data.in_data).transpose())
if data.out_data != None:
keras_Y.append(np.asarray(data.out_data))
for temp_X in temp:
real_X = []
for i in range(temp_X.shape[1]-filter_size+1):
real_X.append(temp_X[:,0+i:filter_size+i])
keras_X.append(np.asarray(real_X))
keras_X = np.asarray(keras_X)
keras_Y = np.asarray(keras_Y)
return (keras_X, keras_Y)
'''
# Data Manipulation (LSTM)
keras_X = []
keras_Y = []
for data in raw_data:
keras_X.append(np.asmatrix(data.in_data).transpose())
if data.out_data != None:
keras_Y.append(np.asarray(data.out_data))
keras_X = np.asarray(keras_X)
keras_Y = np.asarray(keras_Y)
return (keras_X, keras_Y)
'''
def train_func(keras_training_X, keras_training_Y, training_size, classif_num, queue_size, channels = 3):
# CNN LSTM Network
filter_size = 3
cnn = Sequential()
cnn.add(Conv1D(filters=1, kernel_size=3, activation='relu', padding='same', input_shape=(channels, filter_size)))
cnn.add(MaxPooling1D(pool_size=channels))
cnn.add(Flatten())
model = Sequential()
model.add(TimeDistributed(cnn, input_shape=(queue_size-filter_size+1, channels, filter_size)))
model.add(LSTM(100))
model.add(Dense(classif_num, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(keras_training_X, keras_training_Y, epochs = 5, batch_size = 64)
# save model
model.save('model.h5')
'''
# basic LSTM Network
model = Sequential()
model.add(LSTM(100, input_shape=(channels, queue_size)))
model.add(Dense(classif_num, activation = 'sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(keras_training_X, keras_training_Y, epochs = 5, batch_size = 64)
# save model
model.save('model.h5')
'''