Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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))
Exemple #4
0
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