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 ответ
Из моего выпуска тензор-хаб:
Модули TensorFlow Hub содержат tf.GraphDefs
в ядре, и у них есть номер версии формата, чтобы помочь с правильным импортом графиков в более новые версии TensorFlow. Случилось так, что версия этого формата была увеличена с 26 до 27 между загрузкой модулей TF-Hub для публичного запуска 31 марта 2018 года и текущей версией TensorFlow.
Однако в настоящее время мы не знаем о каких-либо видимых последствиях для пользователей модулей из-за сообщения об изменении вывода формы, поэтому наша текущая рекомендация - игнорировать эти предупреждения. Они уйдут со следующим обновлением модулей.