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

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

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

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

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 ответ

Решение

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

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

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

Другие вопросы по тегам