在keras文本分类模型中预测时如何循环

Posted

技术标签:

【中文标题】在keras文本分类模型中预测时如何循环【英文标题】:How to loop when predicting in keras text classification model 【发布时间】:2019-07-02 05:01:25 【问题描述】:

我是 keras 的新手。我编写了一个文本分类模型,在对一个输入进行预测时,我得到了正确的预测,如下所示:

text=["Cancelling insurance cover that is in excess of your needs"]
one_test = tokenize.texts_to_matrix(text)
text_array=np.array([one_test[0]])
preds = model.predict(text_array)
yhat1 = model.predict_classes(text_array)
yhat2 = model.predict_proba(text_array)
print(preds)
print(yhat1)
print(yhat2)
prediction1=np.argmax(preds)
print(prediction1)

输出: [[0.21625464 0.17296328 0.17964244 0.27282426 0.15831545]]

[3]

[[0.21625464 0.17296328 0.17964244 0.27282426 0.15831545]]

3

但是,想要发送输入列表来进行预测

prediction_list=[]
Actionlist= ["Cancelling insurance cover that is in excess of your 
needs","Decrease loan payment","use your surplus cash reserves to pay for 
holiday expense or travel"]
for text in Actionlist:
    print(text)
    one_test = tokenize.texts_to_matrix(text)
    text_array=np.array([one_test[0]])
    preds = model.predict(text_array)
    print(preds)
    yhat1 = model.predict_classes(text_array)
    print(yhat1)
    prediction=np.argmax(preds)
    print(prediction)
    prediction_list.append(prediction)
print(prediction_list)

我得到以下输出,而不是得到三个预测。

取消超出您需求的保险范围

[[0.20537896 0.20620751 0.1970055 0.1982517 0.19315639]]

[1]

1

减少贷款支付

[[0.20537896 0.20620751 0.1970055 0.1982517 0.19315639]]

[1]

1

使用您的剩余现金储备来支付假期费用或旅行

[[0.20537896 0.20620751 0.1970055 0.1982517 0.19315639]]

[1]

1

[1, 1, 1]

请帮忙 提前致谢

【问题讨论】:

【参考方案1】:

问题是你需要一个 text_to_matrix() 的列表。因此,只需在将 text=[text] 输入到 text_to_matrix() 之前设置它即可。

【讨论】:

以上是关于在keras文本分类模型中预测时如何循环的主要内容,如果未能解决你的问题,请参考以下文章

如何在 keras 中进行深度学习中的多标签分类?

有没有一种方法可以使用多标签分类,但当模型仅预测 keras 中的一个标签时认为是正确的?

Keras,比分对预测值

Keras 中的多分类预测不止一个?

在 keras 中使用 CNN 对图像进行二值分类时正确预测的总数

keras使用多进程