Максимальное значение Relu6 больше 6 в сверточных слоях квантованного мобила enet с квантованным обучением - PullRequest
0 голосов
/ 30 марта 2020

Я использую tenorflow slim для обучения собственной модели mobilenet_v1_1.0_224_quant для моего проекта. Я использовал эту команду:

python train_image_classifier.py --train_dir=TRAINDIR --dataset_dir=classes_data --dataset_name=classes --dataset_split_name=train --model_name=mobilenet_v1 --train_image_size=224 --checkpoint_path=mobilenet_v1_1.0_224_quant/mobilenet_v1_1.0_224_quant.ckpt --max_number_of_steps=200 --checkpoint_exclude_scopes=MobilenetV1/Logits --trainable_scopes=MobilenetV1/Logits --quantize_delay=0 --clone_on_cpu=True

в https://github.com/tensorflow/models/tree/master/research/slim и все прошло хорошо. Потери быстро приблизились к 0.11, и я получил это для eval Accuracy [0.81] eval / Recall_5 1 .

Однако, когда я заморозил график и осмотрел его, я увидел, что Relu6 max значение было немного больше, чем 6. Мой замороженный график с максимальным значением Relu6 более 6 В примере модели mobilenet_v1_1.0_224_quant, обученной на 1000 классов по imag enet, которые они использовали, их максимальное значение Relu6 было меньше 6, поэтому Я думаю, что это правильно. Пример замороженного графика с правильным максимальным значением Relu6

Проблема с максимальным значением Relu6, превышающим 6, заключается в том, что, по-моему, моя модель сломана. Когда я запускаю python label_image.py в моем файле tflite, я получаю много 1.000 для класса, когда число не должно быть таким высоким, а иногда 1.000 находится в неправильном классе. Кто-нибудь знает, что может быть причиной этого? Я выполняю точную настройку с контрольной точки, а ресурсы в Интернете говорят, что вам следует установить квантовую задержку равной 0 при точной настройке, чтобы начать квантованное обучение с осознанием. Я не знаю, что вызывает максимальное значение Relu6 go более 6.

...