accuracy_based_auto_calibration
Function Usage
Calibrates the input model based on the input configuration file to search for a quantization configuration that meets accuracy requirements, and outputs a model suitable for both accuracy simulation in the TensorFlow environment and inference deployment on Ascend AI Processor.
Constraints
None.
Prototype
accuracy_based_auto_calibration(model_file,outputs,record_file,config_file,save_dir,evaluator,strategy='BinarySearch',sensitivity='CosineSimilarity')
Command-Line Options
Option |
Input/Return |
Meaning |
Restriction |
|---|---|---|---|
model_file |
Input |
Original TensorFlow model file (.pb). |
A string |
outputs |
Input |
List of output nodes. |
A string |
config_file |
Input |
Quantization configuration file generated by the user. |
A string |
record_file |
Input |
Quantization factor record file. The existing file (if any) in the path will be overwritten upon this API call. |
A string |
save_dir |
Input |
Model save path. Must include the prefix of the model name, for example, ./quantized_model/*model. |
A string |
evaluator |
Input |
Python instance for automatic quantization calibration and accuracy evaluation. |
Data type: Python instance |
strategy |
Input |
Policy for searching for the quantization configuration that meets the accuracy requirements. The dichotomy policy is used by default. |
Data type: string or python instance Default value: BinarySearch |
sensitivity |
Input |
Metric used to evaluate how quantization-sensible each layer to be quantized is. By default, the cosine similarity metric is used. |
Data type: string or python instance Default value: CosineSimilarity |
Returns
None
Outputs
- A .pb model file that serves for both accuracy simulation in the TensorFlow environment and inference deployment on Ascend AI Processor.
- Quantization factor record file, quantization configuration file, layer similarity file, and automatic quantization rollback history file.
Examples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import amct_tensorflow as amct from amct_tensorflow.accuracy_based_auto_calibration import accuracy_based_auto_calibration def main(): args_check(args) outputs = [PREDICTIONS] record_file = os.path.join(RESULT_DIR, 'record.txt') config_file = os.path.join(RESULT_DIR, 'config.json') with tf.io.gfile.GFile(args.model, mode='rb') as model: graph_def = tf.compat.v1.GraphDef() graph_def.ParseFromString(model.read()) tf.import_graph_def(graph_def, name='') graph = tf.compat.v1.get_default_graph() amct.create_quant_config(config_file, graph) save_dir = os.path.join(RESULT_DIR, 'MobileNetV2') evaluator = MobileNetV2Evaluator(args.dataset, args.keyword, args.num_parallel_reads, args.batch_size) accuracy_based_auto_calibration(args.model, outputs, record_file, config_file, save_dir, evaluator) |