Я пытался квантовать слои 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 к слоям