|
a |
|
b/code/Novel_CNN/Novel_CNN.py |
|
|
1 |
import tensorflow as tf |
|
|
2 |
import numpy as np |
|
|
3 |
import os |
|
|
4 |
from tensorflow import keras |
|
|
5 |
from tensorflow.keras import layers,Sequential |
|
|
6 |
from tensorflow.keras.models import * |
|
|
7 |
from tensorflow.keras.layers import * |
|
|
8 |
from tensorflow.keras.optimizers import * |
|
|
9 |
from tensorflow.keras.callbacks import ModelCheckpoint, LearningRateScheduler |
|
|
10 |
from tensorflow.keras import backend as keras |
|
|
11 |
|
|
|
12 |
def Novel_CNN(input_size = ( 1024, 1)): |
|
|
13 |
inputs = Input(input_size) |
|
|
14 |
conv1 = layers.Conv1D(32, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(inputs) |
|
|
15 |
conv1 = layers.Conv1D(32, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv1) |
|
|
16 |
pool1 = AveragePooling1D(pool_size= 2)(conv1) |
|
|
17 |
|
|
|
18 |
conv2 = layers.Conv1D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool1) |
|
|
19 |
conv2 = layers.Conv1D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv2) |
|
|
20 |
pool2 = AveragePooling1D(pool_size= 2)(conv2) |
|
|
21 |
|
|
|
22 |
conv3 = layers.Conv1D(128, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool2) |
|
|
23 |
conv3 = layers.Conv1D(128, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv3) |
|
|
24 |
pool3 = AveragePooling1D(pool_size= 2)(conv3) #9 |
|
|
25 |
|
|
|
26 |
conv4 = layers.Conv1D(256, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool3) |
|
|
27 |
conv4 = layers.Conv1D(256, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv4) |
|
|
28 |
drop4 = layers.Dropout(0.5)(conv4) |
|
|
29 |
pool4 = AveragePooling1D(pool_size = 2)(drop4) #13 |
|
|
30 |
|
|
|
31 |
conv5 = layers.Conv1D(512, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool4) #14 |
|
|
32 |
conv5 = layers.Conv1D(512, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv5) |
|
|
33 |
drop5 = layers.Dropout(0.5)(conv5) |
|
|
34 |
### |
|
|
35 |
pool5 = AveragePooling1D(pool_size = 2)(drop5) |
|
|
36 |
|
|
|
37 |
conv6 = layers.Conv1D(1024, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool5) #18 |
|
|
38 |
conv6 = layers.Conv1D(1024, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv6) |
|
|
39 |
drop6 = layers.Dropout(0.5)(conv6) |
|
|
40 |
|
|
|
41 |
pool6 = AveragePooling1D(pool_size = 2)(drop6) |
|
|
42 |
|
|
|
43 |
conv7 = layers.Conv1D(2048, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool6) #22 |
|
|
44 |
conv7 = layers.Conv1D(2048, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv7) |
|
|
45 |
drop7 = layers.Dropout(0.5)(conv7) |
|
|
46 |
####### |
|
|
47 |
flatten1 = layers.Flatten()(drop7) |
|
|
48 |
#output1 = layers.Dense(2048)(flatten1) |
|
|
49 |
output1 = layers.Dense(1024)(flatten1) |
|
|
50 |
model = Model(inputs = inputs, outputs = output1) |
|
|
51 |
|
|
|
52 |
model.summary() |
|
|
53 |
return model |
|
|
54 |
|