Python 如何使用分类交叉熵的model.predict?

Python 如何使用分类交叉熵的model.predict?,python,keras,Python,Keras,所以,我只是训练了我的模特 编辑(以下是我获得课程的方式) 在.txt文件中找到了标签 pred = model.predict(train_features)#[0]#np.array(set_one).reshape((-1,48,48,3)))# print(pred) result = [(classes[i], float(pred[i]) * 100.0) for i in range(len(pred))] result.sort(reverse=True, key=lambda

所以,我只是训练了我的模特

编辑(以下是我获得课程的方式)

在.txt文件中找到了标签

pred = model.predict(train_features)#[0]#np.array(set_one).reshape((-1,48,48,3)))#
print(pred)
result = [(classes[i], float(pred[i]) * 100.0) for i in range(len(pred))]
result.sort(reverse=True, key=lambda x: x[1])
for i in range(2):
    (class_name, prob) = result[i]
    print("Top %d ====================" % (i + 1))
    print("Class name: %s" % (class_name))
    print("Probability: %.2f%%" % (prob))
现在,当我使用预测时,我得到的结果是

[[[[0.0000000e+00 0.0000000e+00 0.0000000e+00 1.9776728e-02
    4.9749532e-35 3.3859247e-21 5.2264658e-22 0.0000000e+00
    0.0000000e+00 2.0263837e-21 1.3618594e-32 0.0000000e+00
    4.4031281e-35 0.0000000e+00 0.0000000e+00 0.0000000e+00
    6.0703663e-32 0.0000000e+00 6.8396845e-19 0.0000000e+00
    4.3259302e-11 0.0000000e+00 1.1961731e-34 0.0000000e+00
    2.8515963e-19 9.8022330e-01 0.0000000e+00]]]] 
但是当我尝试将它与我的标签文件相乘时,我得到了一个错误

File "model_predict.py", line 42, in <module>
    result = [(classes[i], float(pred[i]) * 100.0) for i in range(len(pred))]
  File "model_predict.py", line 42, in <listcomp>
    result = [(classes[i], float(pred[i]) * 100.0) for i in range(len(pred))]
TypeError: only size-1 arrays can be converted to Python scalars
文件“model_predict.py”,第42行,在
结果=[(类[i],浮点(pred[i])*100.0)表示范围内的i(len(pred))]
文件“model_predict.py”,第42行,在
结果=[(类[i],浮点(pred[i])*100.0)表示范围内的i(len(pred))]
TypeError:只有大小为1的数组才能转换为Python标量

这是因为
pred
是一个具有形状(1,1,1,27)的numpy数组

为了迭代它并正确地使用它的项作为dict的键,您必须将它展平

尝试在
result=[(类[i],float(pred[i])*100.0)之前添加这一行,以表示范围内的i(len(pred))]


因为在循环的第一次迭代时,我将是一个形状为(1,1,27)的数组,无法用于查找指令。

这是因为
pred
是一个形状为(1,1,1,27)的numpy数组

为了迭代它并正确地使用它的项作为dict的键,您必须将它展平

尝试在
result=[(类[i],float(pred[i])*100.0)之前添加这一行,以表示范围内的i(len(pred))]


因为在循环的第一次迭代时,我将是一个形状为(1,1,27)的数组,无法用于查找指令。

您能提供
类吗?@NicolasGervais Done!你能提供
课程吗?@NicolasGervais完成了!
File "model_predict.py", line 42, in <module>
    result = [(classes[i], float(pred[i]) * 100.0) for i in range(len(pred))]
  File "model_predict.py", line 42, in <listcomp>
    result = [(classes[i], float(pred[i]) * 100.0) for i in range(len(pred))]
TypeError: only size-1 arrays can be converted to Python scalars
pred = list(pred.flatten())