def model1(maxlen, batch_size, num_epochs, w2v, traindf, cvdf): train_gen = batch_generator( df=traindf, encoder=lambda b: data_init.encode_w2v(df=b, w2v=w2v, maxlen=maxlen), batch_size=batch_size, force_batch_size=True) cv_gen = batch_generator( df=cvdf, encoder=lambda b: data_init.encode_w2v(df=b, w2v=w2v, maxlen=maxlen), batch_size=batch_size) # creates the neural network model = Sequential() model.add(LSTM(60, input_dim=300, return_sequences=True)) model.add(Dropout(0.5)) model.add(LSTM(60)) model.add(Dropout(0.5)) model.add(Dense(1, activation='sigmoid')) # compiles the model model.compile('rmsprop', 'binary_crossentropy', metrics=['accuracy', 'mse']) nb_val_samples = len(cvdf) return model, train_gen, cv_gen, nb_val_samples
def model2(maxlen, batch_size, num_epochs, w2v, traindf, cvdf): def encoder(b): encoded_x, encoded_y = data_init.encode_w2v(df=b, w2v=w2v, maxlen=maxlen) return [[encoded_x, encoded_x, encoded_x], encoded_y] train_gen = batch_generator(df=traindf, encoder=encoder, batch_size=batch_size, force_batch_size=True) cv_gen = batch_generator(df=cvdf, encoder=encoder, batch_size=batch_size) # creates the neural network consisting in 3 convolutional layers going to an LSTM layer model1 = Sequential() model1.add( Convolution1D(50, 6, border_mode='valid', activation='relu', input_shape=(maxlen, 300))) model1.add(MaxPooling1D(pool_length=3, border_mode='valid')) model1.add(Dropout(0.5)) model2 = Sequential() model2.add( Convolution1D(50, 5, border_mode='valid', activation='relu', input_shape=(maxlen, 300))) model2.add(MaxPooling1D(pool_length=3, border_mode='valid')) model2.add(Dropout(0.5)) model3 = Sequential() model3.add( Convolution1D(50, 4, border_mode='valid', activation='relu', input_shape=(maxlen, 300))) model3.add(MaxPooling1D(pool_length=3, border_mode='valid')) model3.add(Dropout(0.5)) model = Sequential() model.add(Merge([model1, model2, model3], mode='concat', concat_axis=1)) model.add(LSTM(60, return_sequences=True)) model.add(Dropout(0.5)) model.add(LSTM(60)) model.add(Dropout(0.5)) model.add(Dense(1, activation='sigmoid')) # compiles the model model.compile('adam', 'binary_crossentropy', metrics=['accuracy', 'mse']) nb_val_samples = len(cvdf) return model, train_gen, cv_gen, nb_val_samples
def get_model_preds(filename, testdf, maxlen, batch_size, encoder): model = load_model(filename) print 'Getting regression predictions for %s...' % filename test_gen = data_init.batch_generator(df=testdf, encoder=encoder, batch_size=batch_size, shuffle=False) return model.predict_generator(test_gen, val_samples=len(testdf))
def model5(maxlen, batch_size, num_epochs, alphabet, traindf, cvdf, categorical=False): def encoder(b): encoded_x, encoded_y = data_init.encode_embed(df=b, alphabet=alphabet, maxlen=maxlen, categorical=categorical) return [[encoded_x, encoded_x, encoded_x], encoded_y] train_gen = balanced_batch_generator(df=traindf, encoder=encoder, batch_size=batch_size, force_batch_size=True) cv_gen = batch_generator(df=cvdf, encoder=encoder, batch_size=batch_size, shuffle=False) # creates the neural network consisting in 3 convolutional layers going into an LSTM layer inputs = [] for filter_size in (6, 5, 4): model1 = Sequential() model1.add(Embedding(30000, 100, input_length=maxlen)) model1.add( Convolution1D(310, filter_size, border_mode='valid', activation='relu')) model1.add(MaxPooling1D(pool_length=3, border_mode='valid')) model1.add(Dropout(0.5)) model1.add( Convolution1D(100, 3, border_mode='valid', activation='relu')) model1.add(MaxPooling1D(pool_length=3, border_mode='valid')) model1.add(Dropout(0.5)) model1.add(LSTM(60, return_sequences=True)) model1.add(Dropout(0.5)) inputs.append(model1) model = Sequential() model.add(Merge(inputs, mode='sum', concat_axis=1)) model.add(LSTM(60)) model.add(Dropout(0.5)) if categorical: model.add(Dense(5, activation='softmax')) model.compile('rmsprop', 'categorical_crossentropy', metrics=['accuracy', 'mse']) else: model.add(Dense(1, activation='sigmoid')) model.compile('adam', 'binary_crossentropy', metrics=['accuracy', 'mse']) nb_val_samples = len(cvdf) return model, train_gen, cv_gen, nb_val_samples