#python #tensorflow #machine-learning #conv-neural-network #predict
#python #тензорный поток #машинное обучение #conv-нейронная сеть #прогнозировать
Вопрос:
Я построил CIFAR-10
модель классификации изображений с Convolution Neural Net
помощью or CNNs
.
Модель полностью завершена и имеет точность около 59%, но моя проблема в том, как получить прогнозируемую метку из модели. он может предсказать эти классы (10):
['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
Я пытаюсь сказать, что, например, мы даем модели изображение самолета, которое она должна предсказать, и показываем мне метку после прогнозирования, но я не могу понять, как получить предсказанную метку.
Вот что я пробовал, но не понимаю, каков результат:
with tf.Session() as sess:
sess.run(init)
print(sess.run(tf.argmax(y_pred, 1), feed_dict={x:ch.test_images, y_true:ch.test_labels, hold_prob:1.0}))
print(sess.run(tf.argmax(y_true, 1), feed_dict={x:ch.test_images, y_true:ch.test_labels, hold_prob:1.0}))
ВЫВОД:
[0 0 0 ... 0 3 3]
[3 8 8 ... 5 1 7]
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ:
ВЕРСИЯ TENSORFLOW: 1.15.2
РЕДАКТОР: Google Colab
ОС: Windows 7
ССЫЛКА НА ФАЙЛ GOOGLE COLAB: https://drive.google.com/file/d/1NpYGWvo9bNG0SJsFJ6R3se46b1ovDUX8/view?usp=sharing
ПРИМЕЧАНИЕ: Ссылка устарела
Если вам нужна дополнительная информация или вы не хотите задавать какие-либо вопросы по этому вопросу, пожалуйста, дайте мне знать!
Ответ №1:
То, что вы получаете, — это indexes
классы, то есть число, которым представлен каждый класс. В вашем примере 0 означает «самолет», 1 означает «автомобиль» и так далее.
Чтобы получить имена, вам просто нужно получить доступ к именам классов.
classes=['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
with tf.Session() as sess:
sess.run(init)
idxs = sess.run(tf.argmax(y_pred, 1), feed_dict={x:ch.test_images, y_true:ch.test_labels, hold_prob:1.0}))
labels = [classes[idx] for idx in idxs]
print(labels)
Комментарии:
1. Но @charlie возможно ли, что я получаю метку и изображение одновременно, в основном я имею в виду, что вверху я увижу исходное изображение, а внизу — предсказанную метку, возможно ли это?
2. Что вы имеете в виду? Вы имеете в виду с точки зрения визуализации? Если это так, конечно, вы можете использовать любую утилиту построения изображений, такую как matplotlib, а затем выполнить итерацию по изображениям и прогнозируемым меткам и добавить метку в качестве заголовка рисунка, что-то вроде:
matplotlib.pyplot.imshow(image);matplotlib.pyplot.title(label)