Получение логитов вывода из модели Deeplab
Я использую предварительно обученный deeplab
модель ( отсюда), чтобы получить сегментации для входного изображения. Я могу получить семантические метки (т.е. SemanticPredictions
), который argmax применяется к логитам ( ссылка).
Мне было интересно, если есть простой способ получить логиты до argmax
? Я надеялся найти имя выходного тензора и просто передать его в мою tfsession, как показано ниже:
tf_session.run(
self.OUTPUT_TENSOR_NAME,
feed_dict={self.INPUT_TENSOR_NAME: [np.asarray(input_image)]})
Но я не смог найти такое тензорное имя в коде, который раскрывает логиты или выходные данные softmax.
0 ответов
Для модели, обученной с помощью настройки MobileNet_V2 self.OUTPUT_TENSOR_NAME = 'ResizeBilinear_2:0'
извлекает логиты перед выполнением argmax.
Я подозреваю, что это то же самое для xception, но не проверял.
Я пришел к этому ответу, загрузив свою модель в тензорный поток. Затем распечатайте названия всех слоев загруженного графика. Наконец, я взял имя окончательного выходного слоя перед последним слоем "ArgMax" и провел с его помощью некоторый вывод.
Вот ссылка на вопрос stackru о печати имен слоев на графике.Я нашел ответ Теда очень полезным.
Кстати, в выходных слоях моделей DeeplabV3 SoftMax не применяется. Таким образом, вы не можете просто принять исходное значение элементов выходных векторов как уверенность.