python-3.x - 如何在keras中使用model.predict?
问题描述
model.predict
在为句子分类任务训练我的模型之后,我正在使用 keras 。我的代码是
import numpy as np
model = Sequential()
l = ['Hello this is police department', 'hello this is 911 emergency']
tokenizer = Tokenizer()
tokenizer.fit_on_texts(l)
X = tokenizer.texts_to_sequences(l)
X = np.array(X)
a = model.predict(X)
print(a)
但输出似乎是一个数组,
[[1. 2. 3. 4. 5.]
[1. 2. 3. 6. 7.]]
我正在处理带有 2 个标签的句子分类任务。所以我想将这些句子预测为0
or 1
。而是得到一个 numpy 数组。我如何编码以使其预测这两个标签之一?
解决方案
为您的模型添加一些图层。要获得 [0,1] 中的概率,请使用 sigmoid 作为最后一次激活
from sklearn.preprocessing import LabelEncoder
maxlen = 10
X_train = ['Hello this is police department',
'hello this is 911 emergency',
'asdsa sadasd',
'asnxas asxkx',
'kas',
'jwxxxx']
y_train = ['positive','negative','positive','negative','positive','negative']
label_enc = LabelEncoder()
label_enc.fit(y_train)
tokenizer = tf.keras.preprocessing.text.Tokenizer()
tokenizer.fit_on_texts(X_train)
X_train = tokenizer.texts_to_sequences(X_train)
X_train = tf.keras.preprocessing.sequence.pad_sequences(X_train, maxlen=maxlen)
y_train = label_enc.transform(y_train)
model = Sequential()
model.add(Dense(1, activation='sigmoid', input_shape=(maxlen,)))
model.compile('adam', 'binary_crossentropy')
model.fit(X_train,y_train, epochs=3)
### PREDICT NEW UNSEEN DATA ###
X_test = ['hello hSDAS', '911 oaoad']
X_test = tokenizer.texts_to_sequences(X_test)
X_test = tf.keras.preprocessing.sequence.pad_sequences(X_test, maxlen=maxlen)
a = (model.predict(X_test)>0.5).astype(int).ravel()
print(a)
reverse_pred = label_enc.inverse_transform(a.ravel())
print(reverse_pred)
推荐阅读
- python-3.x - 生成分类计数正态分布的分类变量列表
- .net - 在任务延续中是否总是可见副作用?
- c# - 如何单独而不是并行处理 Hangfire BackgroudJobs?
- java - 创建自定义 gradle 任务以获取 mysql 模式
- c - 有没有办法让正在运行的程序在 txt 文件上写入
- java - 我有一些模型我不想手动或自动插入 @Id 我只想从 insert 中导入它?爪哇
- java - 仅 Firebase 实时数据库 DataSnapshot 读取子项中的最后一个值
- mysql - 有没有办法提高 Docker 中 MySql 的性能?
- rabbitmq - RabbitMQ:“message-ttl”和“过期”之间的区别
- php - 在属性注释中使用模型的问题。应该是模型而不是数组