Commit 0abf6498 authored by Florian RICHOUX's avatar Florian RICHOUX

Add lstm64_3conv2_2dense_shared

Former-commit-id: 89174c08
parent d675d065
......@@ -11,6 +11,7 @@ import data_loader as dl
#import mail_callback
from models.lstm32_3conv3_2dense import LSTM32_3Conv3_2Dense
from models.lstm32_3conv3_2dense_shared import LSTM32_3Conv3_2Dense_S
from models.lstm64_3conv2_2dense_shared import LSTM64_3Conv2_2Dense_S
from models.fc6_embed3_2dense import FC6_Embed3_2Dense
from models.fc2_2dense import FC2_2Dense
......@@ -65,6 +66,8 @@ def factory_model( model_name ):
return LSTM32_3Conv3_2Dense(), 'lstm32_3conv3_2dense'
elif model_name == 'lstm32_3conv3_2dense_shared':
return LSTM32_3Conv3_2Dense_S(), 'lstm32_3conv3_2dense_shared'
elif model_name == 'lstm64_3conv2_2dense_shared':
return LSTM64_3Conv2_2Dense_S(), 'lstm64_3conv2_2dense_shared'
elif model_name == 'fc6_embed3_2dense':
return FC6_Embed3_2Dense(), 'fc6_embed3_2dense'
elif model_name == 'fc2_2dense':
......@@ -100,7 +103,7 @@ def make_parser():
parser.add_argument('-train', type=str, help='File containing the training set')
parser.add_argument('-val', type=str, help='File containing the validation set')
parser.add_argument('-test', type=str, help='File containing the test set')
parser.add_argument('-model', type=str, help='choose among: lstm32_3conv3_2dense_shared, lstm32_3conv3_2dense, fc6_embed3_2dense, fc2_2dense')
parser.add_argument('-model', type=str, help='choose among: lstm32_3conv3_2dense, lstm32_3conv3_2dense_shared, lstm64_3conv2_2dense_shared, fc6_embed3_2dense, fc2_2dense')
parser.add_argument('-epochs', type=int, default=50, help='Number of epochs [default: 50]')
parser.add_argument('-batch', type=int, default=64, help='Batch size [default: 64]')
parser.add_argument('-patience', type=int, default=0, help='Number of epochs before triggering the early stopping criterion [default: infinite patience]')
from keras.models import Model
from keras import layers
from keras import Input
import numpy as np
import tensorflow as tf
from models.abstract_model import AbstractModel
class LSTM64_3Conv2_2Dense_S(AbstractModel):
def __init__(self):
def get_model(self):
conv1 = layers.Conv1D(5, 20, activation='relu')
pool1 = layers.MaxPooling1D(2)
batchnorm1 = layers.BatchNormalization()
conv2 = layers.Conv1D(5, 20, activation='relu')
pool2 = layers.MaxPooling1D(2)
batchnorm2 = layers.BatchNormalization()
conv3 = layers.Conv1D(5, 20, activation='relu')
pool3 = layers.MaxPooling1D(2)
batchnorm3 = layers.BatchNormalization()
lstm = layers.LSTM(64)
input1 = Input(shape=(None,20,), dtype=np.float32, name='protein1')
protein1 = conv1(input1)
protein1 = pool1(protein1)
protein1 = batchnorm1(protein1)
protein1 = conv2(protein1)
protein1 = pool2(protein1)
protein1 = batchnorm2(protein1)
protein1 = conv3(protein1)
protein1 = pool3(protein1)
protein1 = batchnorm3(protein1)
protein1 = lstm(protein1)
input2 = Input(shape=(None,20,), dtype=np.float32, name='protein2')
protein2 = conv1(input2)
protein2 = pool1(protein2)
protein2 = batchnorm1(protein2)
protein2 = conv2(protein2)
protein2 = pool2(protein2)
protein2 = batchnorm2(protein2)
protein2 = conv3(protein2)
protein2 = pool3(protein2)
protein2 = batchnorm3(protein2)
protein2 = lstm(protein2)
head = layers.concatenate([protein1, protein2], axis=-1)
# head = layers.Dense(50, activation='relu')(head)
# head = layers.BatchNormalization()(head)
head = layers.Dense(25, activation='relu')(head)
head = layers.BatchNormalization()(head)
head = layers.Dense(1)(head)
output = layers.Activation(tf.nn.sigmoid)(head)
model = Model(inputs=[input1, input2], outputs=output)
return model
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment