Как использовать tf.quanization.quantize () для квантования модели без подготовки кера? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытался квантовать слои Tacotron2 .

Я не могу понять, как использовать tf.quantization.quantize, чтобы вернуться к моей модели, поэтому Я могу сохранить параметры для последующей загрузки.

Приведенный ниже код печатает var как квантованный слой, но он не отражается на основном графике.

with tf.Session() as sess:
    for var in synthesizer._model.model.all_vars:
        var = tf.quantization.quantize(
            var, -1,1,tf.qint8, mode='MIN_COMBINED',
            round_mode='HALF_AWAY_FROM_ZERO', name=None
        )
        print(var)

I также попробовал следующую функцию. Но это дает мне ошибку, говоря, что определенные c слои не могут быть квантованы, потому что они через некоторое время l oop.

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

Ошибка:

INFO:tensorflow:Cannot use 'Tacotron_model/inference/decoder/while/CustomDecoderStep/decoder_prenet/dense_2/Relu' as input to 'Tacotron_model/inference/decoder/while/CustomDecoderStep/decoder_prenet/dense_2/act_quant/FakeQuantWithMinMaxVars' because 'Tacotron_model/inference/decoder/while/CustomDecoderStep/decoder_prenet/dense_2/Relu' is in a while loop.

Tacotron_model/inference/decoder/while/CustomDecoderStep/decoder_prenet/dense_2/act_quant/FakeQuantWithMinMaxVars while context: None
Tacotron_model/inference/decoder/while/CustomDecoderStep/decoder_prenet/dense_2/Relu while context: Tacotron_model/inference/decoder/while/while_context

Как кто-то может квантовать отдельный слой и применить обратно к модели не-керас ?

пс .: git gist к слоям

...