python - 如何获得keras预测模型CNN中的概率百分比
问题描述
在这里,我得到的数据是 [0 1 0 0] 或 [0 0 0 1],--- 我知道它告诉我 [0 1 0 0] 是 label2,[0 0 0 1] 是标签4,[1 0 0 0]是标签1,[0 0 1 0]是标签3。
import pickle
from keras.preprocessing.sequence import pad_sequences
MAX_SEQUENCE_LENGTH = 1000
MAX_NB_WORDS = 20000
with open ('textsdata', 'rb') as fp:
texts = pickle.load(fp)
tokenizer = Tokenizer(num_words=MAX_NB_WORDS)
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)
inputquery = ["Play some music will ya"]
sequences = tokenizer.texts_to_sequences(inputquery)
model = load_model('my_model.h5')
model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['acc'])
print("sequences", sequences)
data = pad_sequences(sequences, maxlen=MAX_SEQUENCE_LENGTH)
classes = model.predict(data)
y_classes = classes.argmax(axis=-1)
print(y_classes)
我需要它的百分比,就像它确信它是 label1 为 0.67 softmax 之前的值或有足够信心告诉它的值是 label1 或 label2 或 label3 或 label4--
我需要它的百分比是其中任何一个或所有这些百分比,例如......
如果给定输入输出就像
1 级 - 0.87
2 级 - 0.3
3 级 - 0.5
Class4 - 0.5 我怎样才能得到这种输出而不仅仅是 [1 0 0 0] 我应该在上面的代码旁边添加什么请告诉
解决方案
predict 返回一个包含预测的列表。你可以用这个
results = model.predict(data)
for result in results:
print(str(result))
这将返回
0.99
0.87
0.75
或者,如果您在另一个列表中有课程,您应该这样做。
res = model.predict(data)
results = [[i,r] for i,r in enumerate(res)]
results.sort(key=lambda x: x[1], reverse=True)
for r in results:
print(classes[r[0]], str(r[1])))
这返回
("classA", 0.99)
("classB", 0.95)
推荐阅读
- java - 是学生列表类中的一个汇编,但是没有对齐
- kubernetes - 掌舵 Kubernetes。是否可以注入特定副本的副本号?
- sql-server - SQL Server 中“With”语句中的列名参数
- c# - Blazor - 在运行时更改 UI CultureInfo
- sql - 过滤 WHERE 子句上的 CASE 语句,包括变量
- r - 用 R 将县级数据分组到各州
- excel - Excel中如何计算分钟和秒的平均值
- c# - 如何在 C# v4.2.6 控制台中读取多个输入行?
- javascript - 如何找到嵌套 JSON 对象中的差异并突出显示它们
- twitter - 带有媒体附件的 Twitter 直接消息最大长度是多少?