Проблема временного шага в анализе настроений с использованием ГРУ Кераса

Я постараюсь объяснить мою проблему как можно более четко.

Итак, я пытаюсь узнать информацию о продуктах обзоров с помощью ГРУ. У меня есть около миллиона обзоров, все они преобразованы в 300 пространственных векторов. Эти векторы обзора сгруппированы по отдельным продуктам. Теперь у меня есть обучающий набор всех этих миллионов отзывов, где обзоры, относящиеся к одному и тому же продукту, будут один за другим.

Ниже моя модель ГРУ

    X_train = numpy.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
      Y_train = np_utils.to_categorical(encoded_Y_train,nb_classes=3)
      Y_train = numpy.reshape(Y_train, (Y_train.shape[0], 1, Y_train.shape[1]))

    model = Sequential()
    model.add(GRU(input_dim=doc_vec_dim,output_dim=product_embedding_dim,name='GRU',dropout_W=input_dropout,return_sequences=True))
    model.add(TimeDistributed(Dense(input_dim=product_embedding_dim,output_dim=3)))
    model.add(Activation('softmax'))
    model.compile(loss='categorical_crossentropy', optimizer='adagrad', class_mode="categorical",metrics=['accuracy'])
model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=15, validation_split=test_sample,shuffle=False,callbacks=[LoggingCallback(logger)])

Ожидается, что эта ГРУ будет собирать информацию о продукте, такую ​​как конкретный продукт, скорее всего, получит положительные отзывы или наоборот. Но после получения 128-мерного вектора вывода всех уникальных продуктов используется следующий код:

gru_layer_model = Model(input=gru_model.input,
                                         output=gru_model.get_layer('GRU').output)

layer_output = gru_layer_model.predict(X_predict) 

где X_predict - 300-мерный вектор уникального продукта, я не получаю никакого улучшения точности, когда объединяю его с его исходным вектором и классифицирую с помощью SVM.

Здесь временной шаг равен 1. Это проблема? Если да, то как подойти к этой проблеме?

0 ответов

Другие вопросы по тегам