4

Задача состоит в том, чтобы получить вывод на каждый уровень модели pretrained cnn inceptionv3. Например, я загружаю изображение в эту сеть, и хочу получить не только его вывод, но и вывод каждого слоя (по уровню).Имена слоев для предварительно заданной начальной модели v3 (тензорный поток)

Для этого мне нужно знать имена каждого выходного слоя. Это довольно легко сделать для последнего и предварительного последнего слоя:

sess.graph.get_tensor_by_name('pool_3:0') 
sess.graph.get_tensor_by_name('softmax:0') 

(имена pool_3: 0 и SoftMax: 0 перечислены в источниках, относящихся к модели)

Но что, если я хочу, чтобы получить выход не только последнего и предварительного, но и пред-предварительного, предварительного пред-предварительного и т. д. вывода любого уровня этой модели?

Тогда я должен знать имена слоев. Аналогичный вопрос has been asked на StackOverflow, но есть только имена для предварительного последнего и последних слоев, которые также доступны в комментариях в источниках («pool_3: 0», «SoftMax: 0»)

Очевидный способ чтобы получить имена, нужно нарисовать график модели. Но это не тот случай because graph-drawing tool simply crashes. Также есть issue, связанный с этим.

Я также попытался:

  1. Чтобы напечатать все имена граф узлов и построить график, используя информацию только из имен узлов. Но имена узлов довольно загадочны. Также соединения между узлами не так очевидны, из-за inception v3 architecture Так что, зная связи между узлами, этот подход похож на разрыв кода enigma :)
  2. Затем я попытался нарисовать график этой модели с помощью собственного инструмента (получить все входы данного узла (скажем, «пул_3: 0»), затем получить все входы каждого входа «pool_3: 0» и т. д. Этот подход работает для простых моделей. Но когда я попытался использовать его для inceptionv3 реализация из учебника по распознаванию образов, у меня есть 16 ГБ моей оперативной памяти, затем 10 ГБ свопа, затем я просто перестаю смотреть под капот. Может быть, есть несколько циклов в графике (но как это могло быть, если сеть пересылка вперед?)

Итак, возможно, кто-то, кто участвовал в этом заранее подготовленном м odel реализация & «доставка» - это чтение stackoverflow.

Возможно, у кого-то уже есть сломанные имена для этой модели. Просьба поделиться им со мной и сообществом ml. Заранее спасибо!

ответ

1

Базовый вопрос уже задавался (и ответил) в List of tensor names in graph in Tensorflow

Чтобы ответить на озабоченность в связи с вашим подходом (2) - что делает работу (я это сделал). Если бы я должен был догадаться, вы, вероятно, не использовали бы подобную словарю структуру для хранения узлов, поэтому, если несколько узлов получат свой вход с одного и того же узла (например, это очень часто происходит в начальной модели), вы вставляете этот входной узел несколько раз в вашем списке вещей для хранения/посещения. Если вы заботитесь о посещении каждого узла только один раз, это должно выполняться в основном мгновенно без проблем с памятью.

+0

На самом деле, в предварительной модели inceptionv3, поставляемой с тензорным потоком, отсутствует файл model.txt. Поэтому я спросил, где я могу скачать файл model.txt в комментарии к вопросу, на который вы указали мне. Что касается (2) - Да! Я действительно забыл о возможности повторных записей. Ваш ответ мне очень помог! –

Смежные вопросы