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

How to use saved Keras Model for sentiment classification?

我训练了我的模型,并获得了 79% 的情感分类准确率。对于嵌入层,我使用了 word2vec。 现在我已经训练并保存了我的模型,我该如何使用它来将一些输入作为一个句子,它会显示这个句子的概率 positive/negative?

下面给出了一些相关代码。

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

在你的代码中,你只编译了模型,此时你还没有训练任何东西。在使用 fit 对其进行训练后,您可以在经过训练的模型上调用 predict 以提供新的、看不见的输入。这是对所有基本功能的 overview

您不能直接传递字符串(在本例中为 'sentences')进行预测。 Predict 接受输入数据作为 numpy 数组。 因此,您需要像处理火车数据一样处理新的输入句子。

我看不到你对火车数据做了什么,但过程通常是一样的:

  • 清洁
  • 标记化
  • 向量化
  • 匹配单词索引
  • 展平

然后就可以将得到的numpy数组传递给predict,得到想要的结果。