如何使用保存的Keras模型进行情感分类?

时间:2018-01-29 15:42:02

标签: keras word2vec

我训练了我的模型,并获得了79%的情绪分类准确度。对于嵌入层,我使用了word2vec。 现在我已经训练并保存了我的模型,我如何以这样的方式使用它,我可以将一些输入作为一个句子,它显示了句子的概率有多少正/负?

以下是一些相关代码。

word_model = gensim.models.Word2Vec(train_x+test_x, size=100, min_count=1, window=5, iter=100)

model = Sequential()
model.add(Embedding(input_dim=vocab_size, output_dim=emdedding_size, 
                weights=[pretrained_weights]))

model.add(Dropout(0.2))
model.add(Conv1D(filters,
             kernel_size,
             padding='valid',
             activation='relu',
             strides=1))
model.add(GlobalMaxPooling1D())
model.add(Dense(hidden_dims))
model.add(Dropout(0.2))
model.add(Activation('relu'))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
          optimizer='adam',
          metrics=['accuracy'])
model.summary()
model.fit(train_x, train_y,
      batch_size=batch_size,
      epochs=epochs,
      validation_data=(test_x, test_y))

2 个答案:

答案 0 :(得分:1)

在您的代码中,您只编译模型,此时您尚未接受任何培训。使用fit训练后,您可以在训练有素的模型上调用predict来提供新的,看不见的输入。这是所有基本功能的overview

答案 1 :(得分:1)

您无法直接传递字符串(或在这种情况下的句子)以进行预测。 Predict接受输入数据作为numpy数组。 因此,您需要像处理列车数据一样处理新的输入句子。

我无法看到您对列车数据的处理方式,但过程通常是相同的:

  • 清洁
  • 标记化
  • 矢量化
  • 匹配单词index
  • 平铺

然后你可以传递生成的numpy数组来预测以获得所需的结果。