tfmot.quantization.keras.fix_input_output_range

Fix the input and output ranges.

Example:

model = keras.Sequential([
    layers.Dense(10, activation='relu', input_shape=(100,)),
    quantize_annotate_layer(layers.Dense(2, activation='sigmoid'))
])
with quantize.quantize_scope():
  model = quantize_annotate_model(model)
  model = quantize_apply(model)
  model = fix_input_output_range(model, num_bits=4,
      input_min=0, input_max=15,
      output_min=0, output_max=15,
      narrow_range=False)

In certain cases, a desired input/output ranges is known and should not be altered during training. To set these values, use the arguments as follows:

model A tf.keras Sequential or Functional model which has been quantized.
num_bits Number of bits for quantization
input_min The lower end of quantization interval for the input.
input_max The upper end of quantization interval for the input.
output_min The lower end of quantization interval for the output.
output_max The upper end of quantization interval for the output.
narrow_range In case of 8 bits, narrow_range nudges the quantized range to be [-127, 127] instead of [-128, 127]. This ensures symmetric range has 0 as the centre.

Returns a new tf.keras model fixed input range set to (input_min, input_max) and fixed output range set to (output_min, output_max).