Я пытаюсь использовать обучение со смешанной точностью с tf-slim, чтобы ускорить обучение сетей и использовать тензорные ядра, доступные на моих графических процессорах. Я также хочу использовать несколько сетевых архитектур с предварительно обученными контрольными точками.
Пример того, что такое обучение смешанной точности и как оно работает, можно найти по адресу https://devblogs.nvidia.com/mixed-precision-resnet-50-tensor-cores/
Основная идея состоит в том, чтобы 1. Привести входные данные и к fp16 для прямого и обратного прохода 2. Вернуть значения обратно к fp32 при настройке потерь и весов 3. При использовании потерь для обратного прохода умножьте их на шкалу потерь 4 . При обновлении веса разделите его на ту же шкалу убытков.
Это снижает пропускную способность памяти и использует тензорные ядра на графических процессорах Volta и Turing за счет использования fp16.
Моя проблема в том, что я не могу понять, куда поставить приведение к fp16 и fp32 с tf-slim.
Для начала обучения я использую скрипт train_image_classifier.py из models.research.slim
Нужно ли мне выполнять приведение в файлах определений для сетевых архитектур? Или мне нужно применить изменения в файлах tf.contrib.slim?