Python keras预测模型CNN中概率百分比的确定
这里,我得到的数据是[0 1 0 0]或[0 0 0 1]--- 我明白了,它告诉我,[01100]是label2,[00101]是label4,[10000]是label1,[01010]是label3Python keras预测模型CNN中概率百分比的确定,python,keras,conv-neural-network,Python,Keras,Conv Neural Network,这里,我得到的数据是[0 1 0 0]或[0 0 0 1]--- 我明白了,它告诉我,[01100]是label2,[00101]是label4,[10000]是label1,[01010]是label3 import pickle from keras.preprocessing.sequence import pad_sequences MAX_SEQUENCE_LENGTH = 1000 MAX_NB_WORDS = 20000 with open ('textsdata', 'rb'
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)
我需要它的百分比,就像它有信心,它是标签1为0.67
softmax之前的值,或足以确定其为label1或label2或label3或label4的值--
我需要它的百分比是其中任何一个或所有这些百分比,比如
如果输入是给定的,那么输出应该是
类别1-0.87
类别2-0.3
类别3-0.5
类别4-0.5
我如何才能获得这种输出,而不仅仅是[1 0]
在上面的代码旁边我应该添加什么请告诉有一个名为
predict\u probaba
的方法,它返回单个类的概率,而不是类预测。这可以用作
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)
probabilities = model.predict_proba(data)
请在此中查找更多信息。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)
只需打印你的类变量,它包含未校准的概率。现在我只有两个类0或1“只需打印你的类变量,它包含未校准的概率”--我该怎么做?这是一个精确的问题。你可以通过将图像数组除以255.0来强制keras模型显示概率。根据“keras.io/models/model/”没有这样的功能!