Machine learning 使用Keras';斯格鲁

Machine learning 使用Keras';斯格鲁,machine-learning,deep-learning,keras,lstm,gated-recurrent-unit,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(encode

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

所以,我尝试使用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。这就是问题所在吗?如果是,如何解决此问题

如果时间步长为1,为什么要使用重复层?没有序列,不需要使用GRU。GRU基本上是一个致密层。。。请问这300个值代表什么?输入值的解释是什么?@NassimBen-Well 300维值是评论的段落向量表示。因此,我需要对某一特定产品的所有评论进行排序。当产品的评论数量可变时,情况如何?我应该用0向量填充它们吗。我也尝试过使用batch_size=1和stateful=true,并在特定产品结束后重置隐藏值,但仍然没有任何改进。如果您需要将评论放在一起处理,您可以将它们按顺序排列。。。并用0的向量填充。但是对学习的段落向量进行情感分析对我来说没有意义,你没有训练向量包含情感特征。。。当你们进入学习的这一步时,这些信息可能已经丢失了