keras 如何确定角化率预测模型CNN中的概率百分比

wmvff8tz  于 2022-12-04  发布在  其他
关注(0)|答案(3)|浏览(165)

这里,我得到的数据是[0 1 0 0]或[0 0 0 1],---我得到的是它告诉我[0 1 0 0]是标签2,[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)

我需要它的百分比,就像它确信它是0.67,在softmax之前的值,或者它的值,有足够的信心告诉它是label 1,label 2,label 3,还是label 4--
我需要的百分比是任何一个或所有这些百分比像...
如果一个输入是给定的,输出就像
1级-0.87
2级-0.3
三级-0.5
我怎样才能得到这样的输出而不仅仅是[1 0 0 0]我应该在上面的代码旁边添加什么请告诉我

wrrgggsh

wrrgggsh1#

有一个名为predict_proba的方法,它返回单个类的概率,而不是类预测。

probabilities = model.predict_proba(data)

有关详细信息,请参阅此blog

vhmi4jdf

vhmi4jdf2#

from keras.models import load_model

from keras.preprocessing import image

model=load_model("/blah/blah/blah")

img = image.load_img(path, color_mode = "grayscale", target_size=(128, 128, 1))

y = image.img_to_array(img)

y = np.expand_dims(y, axis=0)

images = np.vstack([y])

classes = model.predict(images/255.0, batch_size=8, verbose=0)
yws3nbqq

yws3nbqq3#

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)

相关问题