| import os |
| import gc |
|
|
| import numpy as np |
| import pandas as pd |
| import matplotlib.pyplot as plt |
| import seaborn as sns |
|
|
| from collections import Counter |
| from prettytable import PrettyTable |
| from IPython.display import Image |
|
|
| from sklearn.preprocessing import LabelEncoder |
|
|
| from keras.models import Model |
| from keras.regularizers import l2 |
| from keras.constraints import max_norm |
| from keras.utils import to_categorical |
| from keras.preprocessing.text import Tokenizer |
| from keras.utils import pad_sequences |
| from keras.callbacks import EarlyStopping |
| from keras.layers import Input, Dense, Dropout, Flatten, Activation |
| from keras.layers import Conv1D, Add, MaxPooling1D, BatchNormalization |
| from keras.layers import Embedding, Bidirectional, LSTM, CuDNNLSTM, GlobalMaxPooling1D |
|
|
| import tensorflow as tf |
|
|
|
|
| def residual_block(data, filters, d_rate): |
| """ |
| _data: input |
| _filters: convolution filters |
| _d_rate: dilation rate |
| """ |
| |
| shortcut = data |
| |
| bn1 = BatchNormalization()(data) |
| act1 = Activation('relu')(bn1) |
| conv1 = Conv1D(filters, 1, dilation_rate=d_rate, padding='same', kernel_regularizer=l2(0.001))(act1) |
| |
| |
| bn2 = BatchNormalization()(conv1) |
| act2 = Activation('relu')(bn2) |
| conv2 = Conv1D(filters, 3, padding='same', kernel_regularizer=l2(0.001))(act2) |
| |
| |
| x = Add()([conv2, shortcut]) |
| |
| return x |
|
|
| def get_model(): |
| |
| x_input = Input(shape=(100, 21)) |
| |
| |
| conv = Conv1D(128, 1, padding='same')(x_input) |
| |
| |
| res1 = residual_block(conv, 128, 2) |
| res2 = residual_block(res1, 128, 3) |
| |
| x = MaxPooling1D(3)(res2) |
| x = Dropout(0.5)(x) |
| |
| |
| x = Flatten()(x) |
| x_output = Dense(1000, activation='softmax', kernel_regularizer=l2(0.0001))(x) |
| |
| model2 = Model(inputs=x_input, outputs=x_output) |
| model2.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) |
| |
| return model2 |
|
|