Классификация текста с использованием RNN керас - PullRequest
0 голосов
/ 12 июня 2018

Я пытался понять RNN для классификации текста с использованием keras / tenorflow .В настоящее время это работает, чтобы классифицировать позитивные / негативные настроения.Как я мог изменить его на какой-то другой класс?Например, 2 класса, Question или Not-Question.

    # LSTM for sequence classification in the IMDB dataset
    import numpy
    from keras.datasets import imdb
    from keras.models import Sequential
    from keras.layers import Dense
    from keras.layers import LSTM
    from keras.layers.embeddings import Embedding
    from keras.preprocessing import sequence
    # fix random seed for reproducibility
    numpy.random.seed(7)

    # load the dataset but only keep the top n words, zero the rest
    top_words = 5000

    (X_train, y_train), (X_test, y_test) = imdb.load_data(num_words=top_words)

    # truncate and pad input sequences
    max_review_length = 500
    X_train = sequence.pad_sequences(X_train, maxlen=max_review_length)

    X_test = sequence.pad_sequences(X_test, maxlen=max_review_length)
    # create the model
    embedding_vecor_length = 32
    model = Sequential()
    model.add(Embedding(top_words, embedding_vecor_length, input_length=max_review_length))
    model.add(LSTM(100))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    print(model.summary())
    model.fit(X_train, y_train, epochs=3, batch_size=64)
    # Final evaluation of the model
    scores = model.evaluate(X_test, y_test, verbose=0)
    print("Accuracy: %.2f%%" % (scores[1]*100))

1 Ответ

0 голосов
/ 12 июня 2018

Когда у вас есть Dense(1, activation='sigmoid') в последнем слое с loss='binary_crossentropy', вы делаете двоичную классификацию по 2 классам.Таким образом, вы можете использовать ту же модель для изучения вопросов, без вопросов.

Если вам нужно более 2 классов, то мы часто используем Dense(num_classes, activation='softmax') и loss='categorical_crossentropy', что дает распределение вероятности по возможным классам.Фактически, двоичная классификация - это просто особый случай Dense(2, activation='softmax'), где классы [1,0] и `[0,1] ', то есть кодирование целевого класса в одно касание.

...