猿问

如何在keras预测模型CNN中获得概率百分比

在这里,我得到的数据为 [0 1 0 0] 或 [0 0 0 1],--- 我明白它告诉我 [0 1 0 0] 是 label2,[0 0 0 1] 是label4,[1 0 0 0] 是 label1,[0 0 1 0] 是 label3。


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] 我应该在上面的代码旁边添加什么,请告诉


慕标琳琳
浏览 234回答 3
3回答

一只甜甜圈

from keras.models import load_modelfrom keras.preprocessing import imagemodel=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)

达令说

predict 返回一个包含预测的列表。你可以用这个results = model.predict(data)for result in results:    print(str(result))这将返回0.990.870.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)

萧十郎

有一个名为的方法predict_proba返回单个类的概率而不是类预测。这可以用作probabilities = model.predict_proba(data)在此博客中查找更多信息。
随时随地看视频慕课网APP

相关分类

Python
我要回答