-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTrain.py
More file actions
445 lines (369 loc) · 25.8 KB
/
Copy pathTrain.py
File metadata and controls
445 lines (369 loc) · 25.8 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
import numpy as np
import tensorflow as tf
import random as rn
import os
import json
import mat73
from keras import metrics, regularizers, optimizers, backend
from keras.callbacks import TensorBoard, EarlyStopping
from keras.models import Model
from keras.layers import Input, Dense, Dropout, BatchNormalization, Conv2D, DepthwiseConv2D, SeparableConv2D, Flatten, pooling, AveragePooling2D
from keras.utils import np_utils, vis_utils
from tensorflow.keras.models import Sequential
import scipy.io as sio
# ===================================== Fix random seed ======================================================
os.environ['PYTHONHASHSEED'] = '0'
np.random.seed(2021)
rn.seed(2021)
session_conf = tf.compat.v1.ConfigProto(intra_op_parallelism_threads=1, inter_op_parallelism_threads=4)
tf.random.set_seed(2021)
sess = tf.compat.v1.Session(graph=tf.compat.v1.get_default_graph(), config=session_conf)
backend.set_session(sess)
L = 500
nClass = 13
train_model = 31
# ===================================== Load Train Data ======================================================
x_data_mat = mat73.loadmat('train_data.mat')
x_data_complex = x_data_mat['train_data']
x_data_real = x_data_complex.real
x_data_imag = x_data_complex.imag
x_data_real = x_data_real.reshape((x_data_real.shape[0], L, 1))
x_data_imag = x_data_imag.reshape((x_data_imag.shape[0], L, 1))
x_train = np.stack((x_data_real, x_data_imag), axis=1)
y_data_mat = mat73.loadmat('train_label.mat')
y_data = y_data_mat['train_label']
y_train = np_utils.to_categorical(y_data, nClass)
# ===================================== Train Data Shuffle ======================================================
index = np.arange(y_train.shape[0])
np.random.shuffle(index)
x_train = x_train[index,:]
y_train = y_train[index]
print(x_train.shape[1], x_train.shape[2])
_in_ = Input(shape = (x_train.shape[1], x_train.shape[2], 1))
if train_model == 0:
ot = Conv2D(filters=64, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = Conv2D(filters=16, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
#ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
ot = Dense(16, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 1:
ot = Conv2D(filters=256, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
#ot = Conv2D(filters=256, kernel_size=(2,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=80, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=80, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = Dense(128, use_bias=True, activation='relu')(ot)
_out_ = Dense(13, use_bias=True, activation='softmax')(ot)
elif train_model == 2:
ot = Conv2D(filters=64, kernel_size=(2,8), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = Conv2D(filters=32, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
#ot = AveragePooling2D()(ot)
ot = Conv2D(filters=16, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
#ot = AveragePooling2D()(ot)
ot = Flatten()(ot)
#ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(84, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 3:
ot = Conv2D(filters=64, kernel_size=(2,8), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = Conv2D(filters=32, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
#ot = Conv2D(filters=16, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(84, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 4:
ot = Conv2D(filters=64, kernel_size=(2,8), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = DepthwiseConv2D(kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
#ot = Conv2D(filters=16, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(84, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 5:
ot = Conv2D(filters=64, kernel_size=(2,8), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=32, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
#ot = Conv2D(filters=16, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(84, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 6:
ot = SeparableConv2D(filters=64, kernel_size=(2,8), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=32, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
#ot = Conv2D(filters=16, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(84, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 7:
ot = DepthwiseConv2D(kernel_size=(2,8), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=32, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
#ot = Conv2D(filters=16, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(84, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 8:
ot = Conv2D(filters=64, kernel_size=(2,8), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=32, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
#ot = Conv2D(filters=16, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
ot = Dense(16, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 9:
ot = Conv2D(filters=128, kernel_size=(2,8), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
#ot = Conv2D(filters=16, kernel_size=(1,3), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(160, use_bias=True, activation='relu')(ot)
ot = Dense(100, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 10:
ot = Conv2D(filters=128, kernel_size=(2,16), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,16), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 11:
ot = Conv2D(filters=128, kernel_size=(2,16), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 12:
ot = Conv2D(filters=128, kernel_size=(2,8), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 13:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,2), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 14:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=16, kernel_size=(1,2), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 15:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=16, kernel_size=(1,2), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = SeparableConv2D(filters=8, kernel_size=(1,2), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 16:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=16, kernel_size=(1,2), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = SeparableConv2D(filters=8, kernel_size=(1,2), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(84, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 17:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=16, kernel_size=(1,2), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,2), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(84, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 18:
ot = Conv2D(filters=128, kernel_size=(2,16), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,16), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
ot = Dense(32, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 19:
ot = Conv2D(filters=128, kernel_size=(2,16), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,16), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 20:
ot = Conv2D(filters=128, kernel_size=(2,16), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,16), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=16, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 21:
ot = Conv2D(filters=128, kernel_size=(2,16), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 22:
ot = Conv2D(filters=128, kernel_size=(2,8), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 23:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 24:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 25:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 26:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 27:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Conv2D(filters=8, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 28:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=16, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 29:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=32, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 30:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=32, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=16, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
elif train_model == 31:
ot = Conv2D(filters=128, kernel_size=(2,4), strides=1, padding='valid', use_bias=True, activation='relu')(_in_)
ot = SeparableConv2D(filters=64, kernel_size=(1,8), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=32, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = SeparableConv2D(filters=32, kernel_size=(1,4), strides=1, padding='valid', depth_multiplier=1, use_bias=True, activation='relu')(ot)
ot = Conv2D(filters=16, kernel_size=(1,4), strides=1, padding='valid', use_bias=True, activation='relu')(ot)
ot = Flatten()(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(120, use_bias=True, activation='relu')(ot)
ot = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True)(ot)
ot = Dense(64, use_bias=True, activation='relu')(ot)
_out_ = Dense(nClass, activation='softmax')(ot)
model = Model(_in_, _out_)
tensor_board = TensorBoard(log_dir='./tensorboard_log', histogram_freq=0, write_graph=True, write_images=False,
embeddings_freq=0, embeddings_layer_names=None, embeddings_metadata=None)
early_stopping = EarlyStopping(monitor='val_loss', patience=10)
adam = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08)
model.compile(loss='categorical_crossentropy',
optimizer=adam,
metrics=['categorical_accuracy'])
model.fit(x_train,
y_train,
epochs=500,
batch_size=100,
validation_split=0.1,
shuffle=True,
callbacks=[tensor_board, early_stopping])
scores = model.evaluate(x_train, y_train)
print(" %s %f" % (model.metrics_names[1], scores[1]))
model.summary()
with open('model_struct_model' + str(train_model) + '.json', 'w') as f:
json.dump(model.to_json(), f)
model.save_weights('model_weights_model' + str(train_model) + '.h5')