Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python keras预测模型CNN中概率百分比的确定_Python_Keras_Conv Neural Network - Fatal编程技术网

Python keras预测模型CNN中概率百分比的确定

Python 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'

这里,我得到的数据是[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') 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/”没有这样的功能!