Moblenet V2: импорт графа с более низкой версией производителя в граф с более высокой версией производителя - PullRequest
0 голосов
/ 10 октября 2018

Я разрабатываю приложение для обучения переносу, в котором я переобучаю MobileNetV2 для своего потока данных.

Я переобучаю модель с помощью retrain.py из тензор-концентратор-концентратор и не вносил никаких изменений.

Когда я запускаю скрипт из терминала, я получаю это предупреждение сразу после загрузки модели во временный каталог в моем профиле пользователя.

Importing a graph with a lower producer version 26 into an existing graph with producer 
version 27. Shape inference will have run different parts of the graph with different 
producer versions.

Во время отладки я создалсценарий test.py, чтобы определить, откуда исходит предупреждение:

import tensorflow as tf
import tensorflow_hub as hub

def create_module_graph(module_spec):
  """Creates a graph and loads Hub Module into it.

  Args:
    module_spec: the hub.ModuleSpec for the image module being used.

  Returns:
    graph: the tf.Graph that was created.
    bottleneck_tensor: the bottleneck values output by the module.
    resized_input_tensor: the input images, resized as expected by the module.
    wants_quantization: a boolean, whether the module has been instrumented
      with fake quantization ops.
  """
  FAKE_QUANT_OPS = ('FakeQuantWithMinMaxVars',
                     'FakeQuantWithMinMaxVarsPerChannel')
  height, width = hub.get_expected_image_size(module_spec)
  with tf.Graph().as_default() as graph:
    resized_input_tensor = tf.placeholder(tf.float32, [None, height, width, 3])
    m = hub.Module(module_spec)
    bottleneck_tensor = m(resized_input_tensor)
    wants_quantization = any(node.op in FAKE_QUANT_OPS
                             for node in graph.as_graph_def().node)
  return graph, bottleneck_tensor, resized_input_tensor, wants_quantization


def main():



   module_spec = hub.load_module_spec('https://tfhub.dev/google/imagenet/mobilenet_v2_100_96/classification/2')

   graph, bottleneck_tensor, resized_input_tensor, wants_quantization = create_module_graph(module_spec)



if __name__ =='__main__':
   main()

И обнаружил, что оно возникло из функции create_module_graph в retrain.py.Когда я запускаю скрипт из терминала, используя python test.py, я получаю предупреждение производителя сверху.Однако, когда я запускаю main() из консоли ipython, я не получаю предупреждения о версии производителя.

Я не уверен, почему это происходит, когда все, что я делаю, - это создание графа из репозитория tenorflow-hub.Я просмотрел версии совместимости документации и не увидел ничего особенно относящегося к ошибке.Просматривая исходный код , код , кажется, что он показывает, что мой график сокращен до самой низкой версии перед его построением.

  1. Не о чем ли беспокоиться?
  2. Изменится ли способ загрузки графика для прогнозирования?

1 Ответ

0 голосов
/ 02 ноября 2018

Из моего тензор-хаба выпуск :

Модули TensorFlow Hub содержат tf.GraphDefs в ядре, и у них есть номер версии формата, чтобы помочь с правильным импортом графиков в более новые версииTensorFlow.Случилось так, что версия этого формата была увеличена с 26 до 27 между загрузкой модулей TF-Hub для публичного запуска 31 марта 2018 года и текущей версией TensorFlow.

Однако в настоящее время мы не знаем ни о какихвидимый эффект для пользователей модуля из-за сообщенного изменения в выводе формы, поэтому наша текущая рекомендация - игнорировать эти предупреждения.Они уйдут со следующим обновлением модулей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...