Я довольно плохо знаком с квантованием в тензорном потоке. У меня есть следующий код:
import tensorflow as tf
from tensorflow.python.ops.gen_math_ops import quantized_mat_mul
from tensorflow.python.ops.gen_math_ops import quantized_add
a = tf.constant([1.4,-1.2],shape =[1,2],dtype = tf.float32)
a1 = tf.constant([[1.0],[1.0]],shape = [2,1], dtype=tf.float32)
bias_a = tf.constant([-1.2,1.2],shape=[1,2],dtype = tf.float32)
min_a= tf.reduce_min(a)
max_a= tf.reduce_max(a)
x = tf.quantize(a,min_a,max_a,tf.quint8)
min_a1= tf.reduce_min(a1)
max_a1= tf.reduce_max(a1)
x1 = tf.quantize(a1,min_a1,max_a1,tf.quint8)
min_bias_a= tf.reduce_min(bias_a)
max_bias_a= tf.reduce_max(bias_a)
bias_a_x = tf.quantize(bias_a,min_bias_a,max_bias_a,tf.qint32)
y =tf.matmul(a,a1)
y1 = quantized_mat_mul(x.output,x1.output,x.output_min,x.output_max,x1.output_min,x1.output_max)
o = quantized_add(y1.out,bias_a_x.output,y1.min_out,y1.max_out,bias_a_x.output_min,bias_a_x.output_max)
Результаты y1 следующие (qint32, float_max, float_min), где float_max и float_min представляют минимальное и максимальное значения с плавающей запятой для квантованного 32-битного вывода int.
Однако для quantized_add требуются входные данные в следующем формате (quint8, float_max, float_min), где float_max и float_min - значения max и min float, представляющие квантованный результат uint8.
Я хотел знать, есть ли способ преобразовать результаты qint32 в quint8, чтобы я мог передать их в функцию quantized_add?
Буду очень признателен, если кто-нибудь сможет мне помочь.
Спасибо и С уважением,
Абхинав Джордж