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