Квантование графа TensorFlow для вывода - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь квантовать свою модель (CNN), чтобы преобразовать ее в квантованную модель .tflite. Я следую учебному пособию по адресу: https://github.com/tensorflow/tensorflow/tree/r1.13/tensorflow/contrib/quantize#quantization-aware-training

Прежде всего, я ввожу в свой граф фальшивые узлы квантования, вызывая:

tf.contrib.quantize.create_training_graph(quant_delay=500)

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

tf.contrib.quantize.create_eval_graph(input_graph=tf.get_default_graph())

Я получаю эту ошибку:

ValueError: Training op found in graph, exiting {'ApplyAdam'}

и действительно, при построении графика я эффективно добавил AdamOptimizer для обучения моей модели:

train_step = tf.train.AdamOptimizer(1e-4).minimize(...)

Как решить эту проблему? Кажется, ошибка говорит о том, что мне следует удалить оптимизатор Adam, хотя он мне нужен для обучения.

Мне не удалось найти никакой помощи по этому поводу ни на веб-страницах TensorFlow, ни на других форумах. Я надеюсь, что вы можете помочь мне

Заранее спасибо

1 Ответ

1 голос
/ 22 июня 2019

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

Шаг 1)

В графике тренировок вы создаете все дочтобы проиграть нормально, затем позвоните tf.contrib.quantize.create_training_graph(...), прежде чем добавить свой train_op с оптимизатором.Обучите вашу модель, а затем создайте контрольную точку, вы можете сделать это через tf.estimator API или просто регулярно в tf.Session.


Шаг 2)

Затем вам нужно создатьграф вывода, вы даже не делаете функцию потерь здесь просто частью логического вывода вашей модели.После этого вызовите tf.contrib.quantize.create_eval_graph(...), чтобы добавить операции квантования.Наконец, вы просто восстанавливаете с контрольной точки, созданной в обучении, а затем экспортируете в желаемый формат: замороженный график или сохраненную модель.


Шаг 3)

Преобразование замороженного графика / сохраненной модели в tflite с использованием toco.

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