Получение логитов вывода из модели Deeplab - PullRequest
0 голосов
/ 08 апреля 2019

Я использую предварительно обученную модель deeplab (от здесь ), чтобы получить сегментации для входного изображения. Я могу получить семантические метки (то есть SemanticPredictions), которые argmax применяется к логитам ( ссылка ).

Мне было интересно, есть ли простой способ получить логиты до argmax? Я надеялся найти имя выходного тензора и просто передать его в мою tfsession как в следующем:

tf_session.run(
        self.OUTPUT_TENSOR_NAME,
        feed_dict={self.INPUT_TENSOR_NAME: [np.asarray(input_image)]})

Но мне не удалось найти такое тензорное имя в коде, который показывает логиты или выходные данные softmax.

1 Ответ

0 голосов
/ 18 июня 2019

Для модели, обученной из MobileNet_V2, настройка self.OUTPUT_TENSOR_NAME = 'ResizeBilinear_2:0' извлекает логиты до выполнения argmax.

Я подозреваю, что это то же самое для xception, но я не проверил это.

Я пришел к этому ответу, загрузив мою модель в tenorflow. Затем напечатайте имя всех слоев в загруженном графике. Наконец, я взял имя конечного выходного слоя перед последним слоем 'ArgMax' и выполнил некоторые выводы, используя это.

Вот ссылка на вопрос stackoverflow о печати имен слоев на графике. Я нашел ответ Теда наиболее полезным.

Кстати, на выходные слои моделей DeeplabV3 не распространяется SoftMax. Таким образом, вы не можете просто принять необработанное значение элементов выходных векторов как достоверность.

...