Ejemplo n.º 1
0
def lstm_improved(X_train, y_train, X_test, y_test, vocab_size):
    X_train = tf.keras.preprocessing.sequence.pad_sequences(X_train, maxlen=50)
    X_test = tf.keras.preprocessing.sequence.pad_sequences(X_test, maxlen=50)

    print('X_train shape:', X_train.shape)
    print('X_test shape:', X_test.shape)

    print('Build model...')
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Embedding(vocab_size, EMBED_SIZE, input_length=50))
    model.add(tf.keras.layers.SpatialDropout1D(0.2))

    peephole_lstm_cells = tfa.rnn.PeepholeLSTMCell(HIDDEN_SIZE)
    model.add(tf.keras.layers.RNN(peephole_lstm_cells))

    model.add(tf.keras.layers.Dense(1, activation="sigmoid"))

    opt = tf.keras.optimizers.SGD(learning_rate=0.001, momentum=0.99, decay=1e-6, nesterov=True)

    model.compile(loss=root_mean_squared_logarithmic_error,
                  optimizer=opt)
    # model.compile(optimizer='adam',
    #               loss='binary_crossentropy')
    #
    # model.compile(loss='binary_crossentropy',
    #               optimizer='rmsprop')
    model.fit(X_train, y_train, batch_size=BATCH_SIZE,
              epochs=EPOCHS,
              validation_data=(X_test, y_test))

    X_pred = model.predict(X_test)
    results = [result[0] for result in X_pred]

    readResult(y_test, results, name="LSTM+", form="JSON")
    return model
Ejemplo n.º 2
0
def lstm_zhang(X_train, y_train, X_test, y_test, vocab_size):
    X_train = tf.keras.preprocessing.sequence.pad_sequences(X_train, maxlen=50)
    X_test = tf.keras.preprocessing.sequence.pad_sequences(X_test, maxlen=50)

    print('X_train shape:', X_train.shape)
    print('X_test shape:', X_test.shape)

    print('Build model...')
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Embedding(vocab_size, EMBED_SIZE, input_length=50))
    model.add(tf.keras.layers.SpatialDropout1D(0.2))

    model.add(tf.keras.layers.LSTM(HIDDEN_SIZE))

    model.add(tf.keras.layers.Dense(1, activation="sigmoid"))

    model.compile(optimizer='adam',
                  loss='binary_crossentropy')

    model.compile(loss='binary_crossentropy',
                  optimizer='rmsprop')
    model.fit(X_train, y_train, batch_size=BATCH_SIZE,
              epochs=EPOCHS,
              validation_data=(X_test, y_test), verbose=0)

    X_pred = model.predict(X_test)
    results = [result[0] for result in X_pred]

    readResult(y_test, results, name="LSTM", form="JSON")
    return model
Ejemplo n.º 3
0
def sgd_classify(trains, tests):
    trains, tests = word_transform(trains, tests)

    model = make_pipeline(StandardScaler(with_mean=False),
                          SGDClassifier(max_iter=1000, tol=TOLERANCE))
    model.fit(trains['tfidf'], trains['target'])

    predicted = model.predict(tests['tfidf'])

    readResult(tests['target'], predicted, name="SGD", form="JSON")
    return model
Ejemplo n.º 4
0
def svm_classify(trains, tests):
    trains, tests = word_transform(trains, tests)
    print("trains[0]:")
    print(trains['tfidf'])
    model = make_pipeline(StandardScaler(with_mean=False),
                          LinearSVC(tol=TOLERANCE, max_iter=2000000))
    model.fit(trains['tfidf'], trains['target'])

    predicted = model.predict(tests['tfidf'])

    print("predicted: ", predicted)
    print("target   : ", tests['target'])

    readResult(tests['target'], predicted, name="SVM", form="JSON")
    return model
Ejemplo n.º 5
0
def cnn_zhang(X_train, y_train, X_test, y_test, vocab_size):
    X_train = tf.keras.preprocessing.sequence.pad_sequences(X_train,
                                                            maxlen=128)
    X_test = tf.keras.preprocessing.sequence.pad_sequences(X_test, maxlen=128)

    print('X_train shape:', X_train.shape)
    print('X_test shape:', X_test.shape)

    print('Build model...')
    model = tf.keras.Sequential()
    model.add(
        tf.keras.layers.Embedding(vocab_size, EMBED_SIZE, input_length=128))
    model.add(tf.keras.layers.SpatialDropout1D(0.2))
    model.add(
        tf.keras.layers.Convolution1D(filters=nb_filter,
                                      kernel_size=filter_length,
                                      padding='valid',
                                      activation='relu'))

    model.add(tf.keras.layers.MaxPooling1D(pool_size=2))
    model.add(tf.keras.layers.Flatten())

    model.add(tf.keras.layers.Dense(HIDDEN_SIZE))
    model.add(tf.keras.layers.Dropout(0.25))
    model.add(tf.keras.layers.Activation(activation="relu"))

    model.add(tf.keras.layers.Dense(1, activation="sigmoid"))

    model.compile(optimizer='rmsprop', loss='binary_crossentropy')

    model.fit(X_train,
              y_train,
              batch_size=BATCH_SIZE,
              epochs=EPOCHS,
              validation_data=(X_test, y_test))

    X_pred = model.predict(X_test)
    results = [result[0] for result in X_pred]

    readResult(y_test, results, name="CNN", form="JSON")
    return model
Ejemplo n.º 6
0
def cnn_improved(X_train, y_train, X_test, y_test, vocab_size):
    K.clear_session()
    print('X_train shape:', X_train.shape)
    print('X_test shape:', X_test.shape)
    print('X_train[0] before', X_train[0])
    X_train = tf.keras.preprocessing.sequence.pad_sequences(X_train,
                                                            maxlen=256)
    X_test = tf.keras.preprocessing.sequence.pad_sequences(X_test, maxlen=256)
    print('X_train[1] after', X_train[0])
    print('X_train shape:', X_train.shape)
    print('X_test shape:', X_test.shape)

    print('Build model...')
    model = tf.keras.Sequential()
    model.add(
        tf.keras.layers.Embedding(vocab_size, EMBED_SIZE, input_length=256))
    #model.add(tf.keras.layers.Reshape((128,256)))
    print("#1:", model.output_shape)

    model.add(tf.keras.layers.SpatialDropout1D(0.2))
    model.add(
        tf.keras.layers.Convolution1D(filters=256,
                                      kernel_size=6,
                                      activation='relu'))
    print("#2:", model.output_shape)
    model.add(tf.keras.layers.MaxPooling1D(pool_size=2))
    print("#3:", model.output_shape)

    model.add(
        tf.keras.layers.Convolution1D(filters=256,
                                      kernel_size=5,
                                      activation='relu'))
    print("#4:", model.output_shape)
    model.add(tf.keras.layers.MaxPooling1D(pool_size=2))
    print("#5:", model.output_shape)

    model.add(
        tf.keras.layers.Convolution1D(filters=256,
                                      kernel_size=4,
                                      activation='relu'))
    print("#6:", model.output_shape)
    model.add(tf.keras.layers.MaxPooling1D(pool_size=2))
    print("#7:", model.output_shape)

    model.add(
        tf.keras.layers.Convolution1D(filters=256,
                                      kernel_size=4,
                                      activation='relu'))
    print("#8:", model.output_shape)
    model.add(tf.keras.layers.MaxPooling1D(pool_size=2))
    print("#9:", model.output_shape)
    model.add(
        tf.keras.layers.Convolution1D(filters=256,
                                      kernel_size=4,
                                      activation='relu'))
    print("#10:", model.output_shape)
    model.add(tf.keras.layers.MaxPooling1D(pool_size=2))
    print("#11:", model.output_shape)
    model.add(tf.keras.layers.Flatten())
    print("#12:", model.output_shape)
    model.add(tf.keras.layers.Dense(32, activation="relu"))
    print("#13:", model.output_shape)
    model.add(tf.keras.layers.Dense(16, activation="relu"))
    print("#14:", model.output_shape)
    # model.add(tf.keras.layers.Dropout(0.25))
    model.add(tf.keras.layers.Dense(1, activation="sigmoid"))

    model.compile(optimizer='rmsprop', loss='binary_crossentropy')
    # opt = tf.keras.optimizers.SGD(learning_rate=0.001, momentum=0.99)
    #model.compile(optimizer='sgd', loss=root_mean_squared_logarithmic_error)
    model.fit(X_train,
              y_train,
              batch_size=BATCH_SIZE,
              epochs=EPOCHS,
              validation_data=(X_test, y_test))

    train_pred = model.predict(X_train)
    train_results = [result[0] for result in train_pred]
    X_pred = model.predict(X_test)
    results = [result[0] for result in X_pred]

    readResult(y_train, train_results, name="training_cnn+", form="JSON")
    readResult(y_test, results, name="Testing_CNN+", form="JSON")
    return model