model.predict输出为[[1.0.0.]]、[[0.1.0.]]、[[0.0.1.]],具体取决于图像的类别。目前正在努力将类别名称改为输出,如蹲式、长凳式或提举式,并想知道最好的方法。
model = load_model('imageModel.h5')
img_width, img_height = 150, 150
img = image.load_img('PATH', target_size=(img_width, img_height))
img = image.img_to_array(img)
img = np.expand_dims(img, axis=0)
(model.predict(img))
print(model.predict(img))
我尝试使用for语句,但这打印出了所有3个类别,而不仅仅是图像分类的类别:
array = np.array(model.predict(img))
arr1 = [[1, 0, 0]]
arr2 = [[0, 1, 0]]
arr3 = [[0, 0, 1]]
for arr1 in array == True:
print("bench")
for arr2 in array == True:
print("deadlift")
for arr3 in array == True:
print("squat")
如有任何帮助,我们将不胜感激。
您可以使用argmax来查找它所属类的索引,然后从该索引中读取类名。即使预测是概率的,而不是二进制的,这也会起作用。
class_names = ['bench', 'deadlift', 'squat']
pred = model.predict(img)
pred_class = class_names[np.argmax(pred)]
我想你打算做的是:
arr1 = np.array([1, 0, 0])
arr2 = np.array([0, 1, 0])
arr3 = np.array([0, 0, 1])
if arr1[0] == array[0]:
print("bench")
if arr2[1] == array[1]:
print("deadlift")
if arr3[2] == array[2]:
print("squat")
有一个简单的for循环:
class_names = ['bench', 'deadlift', 'squat']
for each in range(len(array)):
if array[each] == 1:
print(class_names[each])
break