使用Keras的GRU进行情绪分析的时间步问题

时间:2017-03-13 20:51:54

标签: machine-learning deep-learning keras lstm gated-recurrent-unit

我会尽可能清楚地解释我的问题。

所以,我正在尝试使用GRU学习评论的产品信息。我有大约一百万条评论,所有评论都转换为300维矢量。这些评论载体按其各自的产品分组。现在,我有一百万条评论的培训集,其中属于同一产品的评论将是一个接一个。

以下是我的GRU模型

    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)])

此GRU预计会捕获产品信息,例如特别产品最有可能得到正面评价或反之亦然。但是在使用以下代码检索所有唯一产品的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 个答案:

没有答案