Понимание того, что означает вывод fc1000_softmax из тензорной классификации CNN - PullRequest
0 голосов
/ 18 февраля 2020

Я использую python 3.6.10 и тензор потока 1,5 на процессоре. Я обучил cnn и сохранил его как файл .onnx. Сейчас я пытаюсь сделать двоичную классификацию моих изображений, используя следующий код:

import onnx 
import warnings
from onnx_tf.backend import prepare
import numpy as np
from numpy import array
from IPython.display import display
from PIL import Image

warnings.filterwarnings('ignore')
onnx_model = onnx.load("trainednet.onnx")  # load onnx model
tf_rep = prepare(onnx_model) # Import the ONNX model to Tensorflow

img = Image.open('Im025.jpg').resize((224, 224))
img = array(img).reshape(1,3, 224,224)

classification = tf_rep.run(img)
print(classification)

Печать (классификация) дает мне вывод, подобный этому:

Выходы (fc1000_softmax = array ([[9.9967182e-01, 3.2823894e-04]], dtype = float32))

Что означает этот вывод и как его использовать, чтобы понять, какой тензор потока классифицировал мое изображение как ?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Да, именно так, после того, как ваша модель не идеальна (ie модель не имеет 100% точности). Вам следует протестировать больше изображений второго класса, и вы увидите, что второе число будет выше.

Вам следует запустить его на тестовом наборе или обратиться к метрикам обученной модели.

0 голосов
/ 18 февраля 2020

Хорошо, у вас есть массив выходных данных слоя softmax вашей модели. Этот вывод можно интерпретировать как вероятность, назначенную каждому классу (в вашем случае 2). Вы также можете видеть это как «насколько уверенно модель для каждого класса».

Таким образом, чтобы получить окончательную классификацию, вам нужно взять максимальное значение этого массива и отобразить его на карте меток {0 -> class_one, 1-> class_two}.

...