在这里,我得到的数据为[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--
我需要它的百分比是其中任何一个或所有百分比,例如...
如果给定输入,则输出类似
Class1-0.87
Class2-0.3
3级-0.5
4级-0.5 如何获得这种输出,而不仅仅是[1 0 0 0] 我应该在上面的代码旁边添加些什么
答案 0 :(得分:0)
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)
答案 1 :(得分: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)