Я хочу дать моей функции изображение из моего набора данных, чтобы оно выводило имя класса и процент достоверности при его прогнозировании. Я не могу заставить его напечатать имена классов для предсказанного класса. Это выглядит так:
Вот мой код:
def check_topk(path):
image = process_image(path)
names = np.array([class_to_idx[i] for i in classes])
print(names)
plot = imshow(image, ax = plt)
plot.axis('off')
plot.title(path.split('/')[2])
plot.show()
axes = predict(path, model)
print(axes)
yaxis = names[0:5]
y_pos = np.arange(len(yaxis))
xaxis = np.array(axes[0][0].cpu().numpy())
plt.barh(y_pos, xaxis)
plt.xlabel('probability')
plt.yticks(y_pos, names)
plt.show()
Я знаю от 0 до 4 по оси Y из-за имени [0: 5], но это единственный способ заставить его распечатать график, поэтому я сохранил его пока.
Вот код class_to_idx и его вывод, который помечает изображения как их класс:
classes = os.listdir(train_folder)
classes.sort()
#print(classes)
label_mapping = {k: v for v, k in enumerate(classes)}
class_to_idx = {classes[i]: i for i in range(len(classes))}
print(class_to_idx)
{'apple_pie': 0, 'baby_back_ribs': 1, 'baklava': 2, 'beef_carpaccio': 3, 'beef_tartare': 4, 'beet_salad': 5, 'beignets': 6, 'bibimbap': 7, 'bread_pudding': 8, 'breakfast_burrito': 9, .... ....