diff --git a/au-zone/readme.md b/au-zone/readme.md index 39ed1e2..21ff227 100644 --- a/au-zone/readme.md +++ b/au-zone/readme.md @@ -70,58 +70,3 @@ Mandatory Arguments: --input-model --data-model (Caffe2) --value-info (Caffe2) - - -## Project Architecture - -For a given conversion task, convert.py loads an importer and exporter and runs the conversion by importing into a NNEF -graph representation (based on NetworkX) and exports to the proper format. - -### Framework support -Each supported framework implements the import and export functions. Framework implementations are self contained into -their directory ('tensorflow', caffe2', 'common' for NNEF, etc). Existing framework implementations should be used as -references for supporting additional frameworks (once import-export functions are implemented, the implementer just needs -to support it in convert.py). - -### NNEF representation -Importers/exporters are based on NNEF Fragment and NNEF Graph objects (from "common" directory). - -The importers are parsing data from the input format and are reinterpreting it as NNEF definitions to create a NNEF -Fragment for each operation (layer).The importers then use the Fragments created to create a NNEF Graph representation. - -The exporters are using a NNEF Graph object to export either to NNEF format or another framework. - -Here is a simplified example showing the NNEF Fragments and NNEF Graph APIs: - - # Creating NNEF 'External' fragment - input = op.External(shape=in_shape, _uid='input') - - # Creating NNEF 'Variable' fragment - var1 = op.Variable(label='vars/var1', shape=in_shape, _np_tensor = np_array, _uid='var1') - - # Creating NNEF 'Add' fragment - output = op.Add(x=input, y=var1, _uid='output') - - # Creating NNEF Graph - model = NNEFGraph('test_model', - input, - output) - - # Running inference (assuming np_array has previously been set...) - input_data = {'input':input_tensor} - output_tensors = ['output'] - model_output = nnef_model.run(output_tensors, input_data) - - # 'ground_truth' holds the inference result as a numpy array - ground_truth = model_output['output'] - - -## Unit Tests - -The project contains 2 levels of unit tests. - -- Syntax testing: Verifies that a conversion from a framework to NNEF and back to the original framework -still provides a valid model (in the original framework). Those tests are implemented for each of the NNEF primitives, for each supported framework. - -- Model testing: Verifies that the graph result of networks are equivalent before and after converting them to NNEF -and back to their original format. Those tests are implemented for a few reference networks (those provided by the TensorFlow and Caffe2 Model Zoos).