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) #bottleneck convolution bn2 = BatchNormalization()(conv1) act2 = Activation('relu')(bn2) conv2 = Conv1D(filters, 3, padding='same', kernel_regularizer=l2(0.001))(act2) #skip connection x = Add()([conv2, shortcut]) return x def get_model(): # model x_input = Input(shape=(100, 21)) #initial conv conv = Conv1D(128, 1, padding='same')(x_input) # per-residue representation res1 = residual_block(conv, 128, 2) res2 = residual_block(res1, 128, 3) x = MaxPooling1D(3)(res2) x = Dropout(0.5)(x) # softmax classifier 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