GreenWaves-Technologies / gap_sdk

SDK for Greenwaves Technologies' GAP8 IoT Application Processor
https://greenwaves-technologies.com/en/gap8-the-internet-of-things-iot-application-processor/
Apache License 2.0
137 stars 75 forks source link

Can't process tflite models in nntool #290

Closed plinnie closed 2 years ago

plinnie commented 2 years ago

I have a non-quantized version, and a quantized version of a model, and both give me issues when attempting to load it into the GAP SDK nntool. I cloned the latest master this weekend. The model is loosely based on MobilenetV3. I'm using Python 3.9 and Tensorflow 2.7

The non-quanitzed model

Written as follows:

    converter = tf.lite.TFLiteConverter.from_keras_model(model)
    tflite_model = converter.convert()
    tflite_file.write_bytes(tflite_model)

And then attempted to process as follows: (things go wrong when using the fusions command)

(py39tf27) vincent@beult:~/projects/other/gap_sdk/tools/nntool$ ./nntool ~/data/model.tflite
Welcome to NNTOOL. Type help or ? to list commands.

settings - set log level to INFO
log_level - was: 'INFO'
now: 'INFO'
open - opening graph file /home/vincent/data/hummingbird/model.tflite load_quantization = False
tflite - Importing TFLITE model version 3
strided_slice - reducing STRIDED_SLICE_0_1 to a constant
pack - reducing PACK_0_2 to a constant
strided_slice - reducing STRIDED_SLICE_0_11 to a constant
pack - reducing PACK_0_12 to a constant
strided_slice - reducing STRIDED_SLICE_0_32 to a constant
pack - reducing PACK_0_33 to a constant
strided_slice - reducing STRIDED_SLICE_0_44 to a constant
pack - reducing PACK_0_45 to a constant
clean_dangling_nodes - removing node STRIDED_SLICE_0_1 which is not connected to an output
clean_dangling_nodes - removing node STRIDED_SLICE_0_11 which is not connected to an output
clean_dangling_nodes - removing node STRIDED_SLICE_0_32 which is not connected to an output
clean_dangling_nodes - removing node STRIDED_SLICE_0_44 which is not connected to an output
clean_dangling_nodes - removing node SHAPE_0_0 which is not connected to an output
clean_dangling_nodes - removing node SHAPE_0_10 which is not connected to an output
clean_dangling_nodes - removing node SHAPE_0_31 which is not connected to an output
clean_dangling_nodes - removing node SHAPE_0_43 which is not connected to an output
duplicate_constants - node mn3d1activationactivationmuly has more than one out edge and will be duplicated
nngraph - update graph dimensions
set_aliases - looking for aliased edges
nngraph - calculate liveness
nngraph - update graph dimensions
set_aliases - looking for aliased edges
nngraph - calculate liveness
nngraph - update graph dimensions
set_aliases - looking for aliased edges
nngraph - calculate liveness
fuse_pad - adding padding from: PAD_0_4 to filter: CONV_2D_0_5 - has 0 reshapes
fuse_pad - adding padding from: PAD_0_7 to filter: DEPTHWISE_CONV_2D_0_8 - has 0 reshapes
fuse_pad - adding padding from: PAD_0_23 to filter: DEPTHWISE_CONV_2D_0_24 - has 0 reshapes
nngraph - update graph dimensions
set_aliases - looking for aliased edges
nngraph - calculate liveness
(NNT model.tflite 0) adjust
adjust_order - adding transposes to correct tensor order for AT kernels
global_pool - global pool fusion MEAN_0_9: inserting transpose before operation
global_pool - global pool fusion MEAN_0_30: inserting transpose before operation
global_pool - global pool fusion MEAN_0_42: inserting transpose before operation
set_aliases - looking for aliased edges
eliminate_transposes - eliminating unnecessary transposes
eliminate_transposes - search for transposes
eliminate_transposes - trying to eliminate CONV_2D_0_5_trans_in0 upwards
eliminate_transposes - pass reshape RESHAPE_0_3 up trans: old (2, 0, 1) new (0, 1) shape: old 186x62 new 186x62x1
eliminate_transposes - rewrite reshape to 186x62->1x186x62
eliminate_transposes - accepted input_1 - input without fixed order - transpose input (0, 1)
eliminate_transposes - trying to eliminate CONV_2D_0_5_trans_in0 downwards
eliminate_transposes - rejected CONV_2D_0_5  - sensitive to order - inserting transpose (2, 0, 1)
eliminate_transposes - found elimination for CONV_2D_0_5_trans_in0 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_5_trans_out0 upwards
eliminate_transposes - rejected CONV_2D_0_5  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate CONV_2D_0_5_trans_out0 downwards
eliminate_transposes - accepted DEPTHWISE_CONV_2D_0_8_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 93x31x16
eliminate_transposes - found elimination for CONV_2D_0_5_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_5_trans_in1 upwards
eliminate_transposes - accepted mn3d1ConvConv2D - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_5_trans_in1 downwards
eliminate_transposes - rejected CONV_2D_0_5  - sensitive to order - inserting transpose (0, 3, 1, 2)
eliminate_transposes - found elimination for CONV_2D_0_5_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_8_trans_out0 upwards
eliminate_transposes - rejected DEPTHWISE_CONV_2D_0_8  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_8_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_15_trans_out0 - transpose (1, 2, 0) reversed out by [2, 0, 1] on 16x1x1
eliminate_transposes - requires reshape 1x16x1 -> 16x1x1
eliminate_transposes - accepted mn3d1activationactivationmuly - constant input - transpose constant [2, 0, 1]
eliminate_transposes - accepted CONV_2D_0_18_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 47x16x16
eliminate_transposes - accepted MEAN_0_9_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 47x16x16
eliminate_transposes - found elimination for DEPTHWISE_CONV_2D_0_8_trans_out0 downwards - 4 eliminated
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_8_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_convdepthwiseBat_24845f9b - constant input - transpose constant (3, 0, 1, 2)
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_8_trans_in1 downwards
eliminate_transposes - rejected DEPTHWISE_CONV_2D_0_8  - sensitive to order - inserting transpose (3, 0, 1, 2)
eliminate_transposes - found elimination for DEPTHWISE_CONV_2D_0_8_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_14_trans_in0 upwards
eliminate_transposes - pass reshape RESHAPE_0_13 up trans: old (2, 0, 1) new (0,) shape: old 16 new 1x1x16
eliminate_transposes - rewrite reshape to 16->16x1x1
eliminate_transposes - trying to eliminate CONV_2D_0_14_trans_in0 downwards
eliminate_transposes - accepted CONV_2D_0_14 - transpose does nothing but requires reshape [1, 16, 1]->[16, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_14_trans_in0 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_14_trans_out0 upwards
eliminate_transposes - trying to eliminate CONV_2D_0_14_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_15_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 1x1x8
eliminate_transposes - requires reshape 1x8x1 -> 8x1x1
eliminate_transposes - found elimination for CONV_2D_0_14_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_14_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_convsqueeze_exci_fa8e68cb - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_14_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_14 - transpose does nothing but requires reshape [8, 1, 16, 1]->[8, 16, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_14_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_15_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_convsqueeze_exci_e38801bf - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_15_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_15 - transpose does nothing but requires reshape [16, 1, 8, 1]->[16, 8, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_15_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_18_trans_out0 upwards
eliminate_transposes - rejected CONV_2D_0_18  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate CONV_2D_0_18_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_19_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 47x16x8
eliminate_transposes - found elimination for CONV_2D_0_18_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_18_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_convprojectConv2 - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_18_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_18 - transpose does nothing but requires reshape [8, 1, 16, 1]->[8, 16, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_18_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_19_trans_out0 upwards
eliminate_transposes - rejected CONV_2D_0_19  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate CONV_2D_0_19_trans_out0 downwards
eliminate_transposes - accepted DEPTHWISE_CONV_2D_0_20_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 47x16x16
eliminate_transposes - found elimination for CONV_2D_0_19_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_19_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_1expandConv - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_19_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_19 - transpose does nothing but requires reshape [16, 1, 8, 1]->[16, 8, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_19_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_20_trans_out0 upwards
eliminate_transposes - rejected DEPTHWISE_CONV_2D_0_20  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_20_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_21_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 47x16x16
eliminate_transposes - found elimination for DEPTHWISE_CONV_2D_0_20_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_20_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_1depthwiseB_47a8af97 - constant input - transpose constant (3, 0, 1, 2)
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_20_trans_in1 downwards
eliminate_transposes - rejected DEPTHWISE_CONV_2D_0_20  - sensitive to order - inserting transpose (3, 0, 1, 2)
eliminate_transposes - found elimination for DEPTHWISE_CONV_2D_0_20_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_21_trans_out0 upwards
eliminate_transposes - rejected CONV_2D_0_21  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate CONV_2D_0_21_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_22_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 47x16x16
eliminate_transposes - found elimination for CONV_2D_0_21_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_21_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_1projectCon - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_21_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_21 - transpose does nothing but requires reshape [16, 1, 16, 1]->[16, 16, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_21_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_22_trans_out0 upwards
eliminate_transposes - rejected CONV_2D_0_22  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate CONV_2D_0_22_trans_out0 downwards
eliminate_transposes - accepted DEPTHWISE_CONV_2D_0_24_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 47x16x32
eliminate_transposes - found elimination for CONV_2D_0_22_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_22_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_2expandConv - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_22_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_22 - transpose does nothing but requires reshape [32, 1, 16, 1]->[32, 16, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_22_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_24_trans_out0 upwards
eliminate_transposes - rejected DEPTHWISE_CONV_2D_0_24  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_24_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_25_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 24x8x32
eliminate_transposes - found elimination for DEPTHWISE_CONV_2D_0_24_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_24_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_2depthwiseB_dcecc4c0 - constant input - transpose constant (3, 0, 1, 2)
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_24_trans_in1 downwards
eliminate_transposes - rejected DEPTHWISE_CONV_2D_0_24  - sensitive to order - inserting transpose (3, 0, 1, 2)
eliminate_transposes - found elimination for DEPTHWISE_CONV_2D_0_24_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_25_trans_out0 upwards
eliminate_transposes - rejected CONV_2D_0_25  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate CONV_2D_0_25_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_26_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 24x8x24
eliminate_transposes - found elimination for CONV_2D_0_25_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_25_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_2projectCon - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_25_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_25 - transpose does nothing but requires reshape [24, 1, 32, 1]->[24, 32, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_25_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_26_trans_out0 upwards
eliminate_transposes - rejected CONV_2D_0_26  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate CONV_2D_0_26_trans_out0 downwards
eliminate_transposes - accepted DEPTHWISE_CONV_2D_0_28_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 24x8x48
eliminate_transposes - found elimination for CONV_2D_0_26_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_26_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_3expandConv - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_26_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_26 - transpose does nothing but requires reshape [48, 1, 24, 1]->[48, 24, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_26_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_28_trans_out0 upwards
eliminate_transposes - rejected DEPTHWISE_CONV_2D_0_28  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_28_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_36_trans_out0 - transpose (1, 2, 0) reversed out by [2, 0, 1] on 48x1x1
eliminate_transposes - requires reshape 1x48x1 -> 48x1x1
eliminate_transposes - accepted mn3d1activationactivationmuly_1 - constant input - transpose constant [2, 0, 1]
eliminate_transposes - accepted CONV_2D_0_39_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 24x8x48
eliminate_transposes - accepted MEAN_0_30_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 24x8x48
eliminate_transposes - found elimination for DEPTHWISE_CONV_2D_0_28_trans_out0 downwards - 4 eliminated
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_28_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_3depthwiseB_7921cec7 - constant input - transpose constant (3, 0, 1, 2)
eliminate_transposes - trying to eliminate DEPTHWISE_CONV_2D_0_28_trans_in1 downwards
eliminate_transposes - rejected DEPTHWISE_CONV_2D_0_28  - sensitive to order - inserting transpose (3, 0, 1, 2)
eliminate_transposes - found elimination for DEPTHWISE_CONV_2D_0_28_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_35_trans_in0 upwards
eliminate_transposes - pass reshape RESHAPE_0_34 up trans: old (2, 0, 1) new (0,) shape: old 48 new 1x1x48
eliminate_transposes - rewrite reshape to 48->48x1x1
eliminate_transposes - trying to eliminate CONV_2D_0_35_trans_in0 downwards
eliminate_transposes - accepted CONV_2D_0_35 - transpose does nothing but requires reshape [1, 48, 1]->[48, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_35_trans_in0 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_35_trans_out0 upwards
eliminate_transposes - trying to eliminate CONV_2D_0_35_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_36_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 1x1x16
eliminate_transposes - requires reshape 1x16x1 -> 16x1x1
eliminate_transposes - found elimination for CONV_2D_0_35_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_35_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_3squeeze_ex - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_35_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_35 - transpose does nothing but requires reshape [16, 1, 48, 1]->[16, 48, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_35_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_36_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_3squeeze_ex_758f67ae - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_36_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_36 - transpose does nothing but requires reshape [48, 1, 16, 1]->[48, 16, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_36_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_39_trans_out0 upwards
eliminate_transposes - rejected CONV_2D_0_39  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate CONV_2D_0_39_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_40_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 24x8x16
eliminate_transposes - found elimination for CONV_2D_0_39_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_39_trans_in1 upwards
eliminate_transposes - accepted mn3d1expanded_conv_3projectCon - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_39_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_39 - transpose does nothing but requires reshape [16, 1, 48, 1]->[16, 48, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_39_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_40_trans_out0 upwards
eliminate_transposes - rejected CONV_2D_0_40  - sensitive to order - inserting transpose (1, 2, 0)
eliminate_transposes - trying to eliminate CONV_2D_0_40_trans_out0 downwards
eliminate_transposes - accepted MEAN_0_42_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 24x8x96
eliminate_transposes - found elimination for CONV_2D_0_40_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_40_trans_in1 upwards
eliminate_transposes - accepted mn3d1Conv_1Conv2D - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_40_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_40 - transpose does nothing but requires reshape [96, 1, 16, 1]->[96, 16, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_40_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_47_trans_in0 upwards
eliminate_transposes - pass reshape RESHAPE_0_46 up trans: old (2, 0, 1) new (0,) shape: old 96 new 1x1x96
eliminate_transposes - rewrite reshape to 96->96x1x1
eliminate_transposes - trying to eliminate CONV_2D_0_47_trans_in0 downwards
eliminate_transposes - accepted CONV_2D_0_47 - transpose does nothing but requires reshape [1, 96, 1]->[96, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_47_trans_in0 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_47_trans_out0 upwards
eliminate_transposes - trying to eliminate CONV_2D_0_47_trans_out0 downwards
eliminate_transposes - accepted CONV_2D_0_49_trans_in0 - transpose (2, 0, 1) reversed in by (1, 2, 0) on 1x1x128
eliminate_transposes - requires reshape 1x128x1 -> 128x1x1
eliminate_transposes - found elimination for CONV_2D_0_47_trans_out0 downwards - 2 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_47_trans_in1 upwards
eliminate_transposes - accepted mn3d1Conv_2Conv2D - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_47_trans_in1 downwards
eliminate_transposes - accepted CONV_2D_0_47 - transpose does nothing but requires reshape [128, 1, 96, 1]->[128, 96, 1, 1]
eliminate_transposes - found elimination for CONV_2D_0_47_trans_in1 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_49_trans_out0 upwards
eliminate_transposes - trying to eliminate CONV_2D_0_49_trans_out0 downwards
eliminate_transposes - pass reshape RESHAPE_0_50 down trans: old (1, 2, 0) new [0] shape: old 1x1x17 new 17
eliminate_transposes - rewrite reshape to 17x1x1->17
eliminate_transposes - found elimination for CONV_2D_0_49_trans_out0 upwards - 1 eliminated
eliminate_transposes - trying to eliminate CONV_2D_0_49_trans_in1 upwards
eliminate_transposes - accepted mn3d1LogitsConv2D - constant input - transpose constant (0, 3, 1, 2)
eliminate_transposes - trying to eliminate CONV_2D_0_49_trans_in1 downwards
eliminate_transposes - found elimination for CONV_2D_0_49_trans_in1 upwards - 1 eliminated
eliminate_transposes - eliminate transposes
eliminate_transposes_actions - delete transpose CONV_2D_0_5_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_5_trans_in0 removed
eliminate_transposes_actions - RESHAPE_0_3 set reshape in 186x62 out 1x186x62
eliminate_transposes_actions - input_1 input dims with (0, 1)
eliminate_transposes_actions - End Action (up): input_1
eliminate_transposes_actions - delete transpose CONV_2D_0_5_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_5_trans_out0 removed
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_8_trans_in0
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_8_trans_in0 removed
eliminate_transposes_actions - End Action (down): DEPTHWISE_CONV_2D_0_8_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_5_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_5_trans_in1 removed
eliminate_transposes_actions - mn3d1ConvConv2D reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1ConvConv2D
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_8_trans_out0
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_8_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_15_trans_out0 and insert reshape 1x16x1->16x1x1
eliminate_transposes_actions - transpose CONV_2D_0_15_trans_out0 replaced with reshape CONV_2D_0_15_trans_out0_reshape
eliminate_transposes_actions - End Action (up): CONV_2D_0_15_trans_out0
eliminate_transposes_actions - mn3d1activationactivationmuly reorder constant input to (2, 0, 1)
eliminate_transposes_actions - End Action (up): mn3d1activationactivationmuly
eliminate_transposes_actions - delete transpose CONV_2D_0_18_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_18_trans_in0 removed
eliminate_transposes_actions - End Action (down): CONV_2D_0_18_trans_in0
eliminate_transposes_actions - delete transpose MEAN_0_9_trans_in0
eliminate_transposes_actions - transpose MEAN_0_9_trans_in0 removed
eliminate_transposes_actions - End Action (down): MEAN_0_9_trans_in0
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_8_trans_in1
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_8_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_convdepthwiseBat_24845f9b reorder constant input to (3, 0, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_convdepthwiseBat_24845f9b
eliminate_transposes_actions - delete transpose CONV_2D_0_14_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_14_trans_in0 removed
eliminate_transposes_actions - RESHAPE_0_13 set reshape in 16 out 16x1x1
eliminate_transposes_actions - End Action (up): MEAN_0_9
eliminate_transposes_actions - delete transpose CONV_2D_0_14_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_14_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_15_trans_in0 and insert reshape 1x8x1->8x1x1
eliminate_transposes_actions - transpose CONV_2D_0_15_trans_in0 replaced with reshape CONV_2D_0_15_trans_in0_reshape
eliminate_transposes_actions - End Action (down): CONV_2D_0_15_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_14_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_14_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_convsqueeze_exci_fa8e68cb reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_convsqueeze_exci_fa8e68cb
eliminate_transposes_actions - delete transpose CONV_2D_0_15_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_15_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_convsqueeze_exci_e38801bf reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_convsqueeze_exci_e38801bf
eliminate_transposes_actions - delete transpose CONV_2D_0_18_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_18_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_19_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_19_trans_in0 removed
eliminate_transposes_actions - End Action (down): CONV_2D_0_19_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_18_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_18_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_convprojectConv2 reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_convprojectConv2
eliminate_transposes_actions - delete transpose CONV_2D_0_19_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_19_trans_out0 removed
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_20_trans_in0
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_20_trans_in0 removed
eliminate_transposes_actions - End Action (down): DEPTHWISE_CONV_2D_0_20_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_19_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_19_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_1expandConv reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_1expandConv
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_20_trans_out0
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_20_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_21_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_21_trans_in0 removed
eliminate_transposes_actions - End Action (down): CONV_2D_0_21_trans_in0
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_20_trans_in1
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_20_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_1depthwiseB_47a8af97 reorder constant input to (3, 0, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_1depthwiseB_47a8af97
eliminate_transposes_actions - delete transpose CONV_2D_0_21_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_21_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_22_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_22_trans_in0 removed
eliminate_transposes_actions - End Action (down): CONV_2D_0_22_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_21_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_21_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_1projectCon reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_1projectCon
eliminate_transposes_actions - delete transpose CONV_2D_0_22_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_22_trans_out0 removed
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_24_trans_in0
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_24_trans_in0 removed
eliminate_transposes_actions - End Action (down): DEPTHWISE_CONV_2D_0_24_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_22_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_22_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_2expandConv reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_2expandConv
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_24_trans_out0
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_24_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_25_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_25_trans_in0 removed
eliminate_transposes_actions - End Action (down): CONV_2D_0_25_trans_in0
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_24_trans_in1
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_24_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_2depthwiseB_dcecc4c0 reorder constant input to (3, 0, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_2depthwiseB_dcecc4c0
eliminate_transposes_actions - delete transpose CONV_2D_0_25_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_25_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_26_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_26_trans_in0 removed
eliminate_transposes_actions - End Action (down): CONV_2D_0_26_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_25_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_25_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_2projectCon reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_2projectCon
eliminate_transposes_actions - delete transpose CONV_2D_0_26_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_26_trans_out0 removed
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_28_trans_in0
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_28_trans_in0 removed
eliminate_transposes_actions - End Action (down): DEPTHWISE_CONV_2D_0_28_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_26_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_26_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_3expandConv reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_3expandConv
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_28_trans_out0
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_28_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_36_trans_out0 and insert reshape 1x48x1->48x1x1
eliminate_transposes_actions - transpose CONV_2D_0_36_trans_out0 replaced with reshape CONV_2D_0_36_trans_out0_reshape
eliminate_transposes_actions - End Action (up): CONV_2D_0_36_trans_out0
eliminate_transposes_actions - mn3d1activationactivationmuly_1 reorder constant input to (2, 0, 1)
eliminate_transposes_actions - End Action (up): mn3d1activationactivationmuly_1
eliminate_transposes_actions - delete transpose CONV_2D_0_39_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_39_trans_in0 removed
eliminate_transposes_actions - End Action (down): CONV_2D_0_39_trans_in0
eliminate_transposes_actions - delete transpose MEAN_0_30_trans_in0
eliminate_transposes_actions - transpose MEAN_0_30_trans_in0 removed
eliminate_transposes_actions - End Action (down): MEAN_0_30_trans_in0
eliminate_transposes_actions - delete transpose DEPTHWISE_CONV_2D_0_28_trans_in1
eliminate_transposes_actions - transpose DEPTHWISE_CONV_2D_0_28_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_3depthwiseB_7921cec7 reorder constant input to (3, 0, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_3depthwiseB_7921cec7
eliminate_transposes_actions - delete transpose CONV_2D_0_35_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_35_trans_in0 removed
eliminate_transposes_actions - RESHAPE_0_34 set reshape in 48 out 48x1x1
eliminate_transposes_actions - End Action (up): MEAN_0_30
eliminate_transposes_actions - delete transpose CONV_2D_0_35_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_35_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_36_trans_in0 and insert reshape 1x16x1->16x1x1
eliminate_transposes_actions - transpose CONV_2D_0_36_trans_in0 replaced with reshape CONV_2D_0_36_trans_in0_reshape
eliminate_transposes_actions - End Action (down): CONV_2D_0_36_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_35_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_35_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_3squeeze_ex reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_3squeeze_ex
eliminate_transposes_actions - delete transpose CONV_2D_0_36_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_36_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_3squeeze_ex_758f67ae reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_3squeeze_ex_758f67ae
eliminate_transposes_actions - delete transpose CONV_2D_0_39_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_39_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_40_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_40_trans_in0 removed
eliminate_transposes_actions - End Action (down): CONV_2D_0_40_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_39_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_39_trans_in1 removed
eliminate_transposes_actions - mn3d1expanded_conv_3projectCon reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1expanded_conv_3projectCon
eliminate_transposes_actions - delete transpose CONV_2D_0_40_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_40_trans_out0 removed
eliminate_transposes_actions - delete transpose MEAN_0_42_trans_in0
eliminate_transposes_actions - transpose MEAN_0_42_trans_in0 removed
eliminate_transposes_actions - End Action (down): MEAN_0_42_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_40_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_40_trans_in1 removed
eliminate_transposes_actions - mn3d1Conv_1Conv2D reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1Conv_1Conv2D
eliminate_transposes_actions - delete transpose CONV_2D_0_47_trans_in0
eliminate_transposes_actions - transpose CONV_2D_0_47_trans_in0 removed
eliminate_transposes_actions - RESHAPE_0_46 set reshape in 96 out 96x1x1
eliminate_transposes_actions - End Action (up): MEAN_0_42
eliminate_transposes_actions - delete transpose CONV_2D_0_47_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_47_trans_out0 removed
eliminate_transposes_actions - delete transpose CONV_2D_0_49_trans_in0 and insert reshape 1x128x1->128x1x1
eliminate_transposes_actions - transpose CONV_2D_0_49_trans_in0 replaced with reshape CONV_2D_0_49_trans_in0_reshape
eliminate_transposes_actions - End Action (down): CONV_2D_0_49_trans_in0
eliminate_transposes_actions - delete transpose CONV_2D_0_47_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_47_trans_in1 removed
eliminate_transposes_actions - mn3d1Conv_2Conv2D reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1Conv_2Conv2D
eliminate_transposes_actions - delete transpose CONV_2D_0_49_trans_out0
eliminate_transposes_actions - transpose CONV_2D_0_49_trans_out0 removed
eliminate_transposes_actions - insert reshape at CONV_2D_0_49:out_0 in 17x1x1 out 1x1x17
eliminate_transposes_actions - End Action (up): CONV_2D_0_49
eliminate_transposes_actions - delete transpose CONV_2D_0_49_trans_in1
eliminate_transposes_actions - transpose CONV_2D_0_49_trans_in1 removed
eliminate_transposes_actions - mn3d1LogitsConv2D reorder constant input to (0, 3, 1, 2)
eliminate_transposes_actions - End Action (up): mn3d1LogitsConv2D
nngraph - update graph dimensions
set_aliases - looking for aliased edges
nngraph - calculate liveness
eliminate_transposes - search for transposes
eliminate_transposes - no transposes to eliminate found
nngraph - update graph dimensions
set_aliases - looking for aliased edges
nngraph - calculate liveness
eliminate_transposes - no further transpose sequences found
set_aliases - looking for aliased edges
nngraph - adjusted order
nngraph - update graph dimensions
set_aliases - looking for aliased edges
nngraph - calculate liveness
(NNT model.tflite 0) fusions --scale8
Traceback (most recent call last):
  File "/home/vincent/anaconda3/envs/py39tf27/lib/python3.9/site-packages/cmd2/cmd2.py", line 1661, in onecmd_plus_hooks
    stop = self.onecmd(statement, add_to_history=add_to_history)
  File "/home/vincent/anaconda3/envs/py39tf27/lib/python3.9/site-packages/cmd2/cmd2.py", line 2081, in onecmd
    stop = func(statement)
  File "/home/vincent/anaconda3/envs/py39tf27/lib/python3.9/site-packages/cmd2/decorators.py", line 223, in cmd_wrapper
    return func(cmd2_app, args)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/interpreter/commands/fusions.py", line 73, in do_fusions
    fusion.match(self.G)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/graph/matches/matcher.py", line 71, in match
    return self._match(G, set_identity, **kwargs)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/graph/matches/matcher.py", line 195, in _match
    has_modified_graph = match_instance.match(
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/graph/matches/matcher.py", line 71, in match
    return self._match(G, set_identity, **kwargs)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/graph/matches/matchers/find_hsigmoid.py", line 190, in _match
    oprecs = [oprec for oprec in (look_back(G, op)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/graph/matches/matchers/find_hsigmoid.py", line 190, in <listcomp>
    oprecs = [oprec for oprec in (look_back(G, op)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/graph/matches/matchers/find_hsigmoid.py", line 190, in <genexpr>
    oprecs = [oprec for oprec in (look_back(G, op)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/graph/matches/matchers/find_hsigmoid.py", line 97, in look_back
    qrec = G.quantization.get(NodeId(node))
AttributeError: 'NoneType' object has no attribute 'get'
EXCEPTION of type 'AttributeError' occurred with message: ''NoneType' object has no attribute 'get''

For the pre-quantized model

converted as follows (same keras model):

    converter = tf.lite.TFLiteConverter.from_keras_model(model)
    converter.optimizations = [tf.lite.Optimize.DEFAULT]
    converter.representative_dataset = data_gen
    converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
    # Set the input and output tensors to uint8 (APIs added in r2.3)
    converter.inference_input_type = tf.uint8
    converter.inference_output_type = tf.uint8
    tflite_quant_model = converter.convert()
    tflite_quant_file.write_bytes(tflite_quant_model)

and processed as follows (things go wrong when attempting to load the model):

(NNT) open ~/data/model_quant.tflite -q
open - opening graph file /home/vincent/data/model_quant.tflite load_quantization = True
tflite - Importing TFLITE model version 3
quantize_mixin - removing (de)quantize node QUANTIZE_0_0 with scale change
strided_slice - reducing STRIDED_SLICE_0_2 to a constant
pack - reducing PACK_0_3 to a constant
strided_slice - reducing STRIDED_SLICE_0_12 to a constant
pack - reducing PACK_0_13 to a constant
strided_slice - reducing STRIDED_SLICE_0_33 to a constant
pack - reducing PACK_0_34 to a constant
strided_slice - reducing STRIDED_SLICE_0_45 to a constant
pack - reducing PACK_0_46 to a constant
quantize_mixin - removing (de)quantize node QUANTIZE_0_53 with scale change
clean_dangling_nodes - removing node STRIDED_SLICE_0_2 which is not connected to an output
clean_dangling_nodes - removing node STRIDED_SLICE_0_12 which is not connected to an output
clean_dangling_nodes - removing node STRIDED_SLICE_0_33 which is not connected to an output
clean_dangling_nodes - removing node STRIDED_SLICE_0_45 which is not connected to an output
clean_dangling_nodes - removing node SHAPE_0_1 which is not connected to an output
clean_dangling_nodes - removing node SHAPE_0_11 which is not connected to an output
clean_dangling_nodes - removing node SHAPE_0_32 which is not connected to an output
clean_dangling_nodes - removing node SHAPE_0_44 which is not connected to an output
duplicate_constants - node mn3d1activationactivationmuly has more than one out edge and will be duplicated
nngraph - update graph dimensions
set_aliases - looking for aliased edges
nngraph - calculate liveness
nngraph - update graph dimensions
set_aliases - looking for aliased edges
nngraph - calculate liveness
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1ConvBatchNormFusedBatchNo:0 -> CONV_2D_0_6:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1expanded_convdepthwiseBat_b3bc5fa9:0 -> DEPTHWISE_CONV_2D_0_9:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT expanded_convsqueeze_exciteCon:0 -> CONV_2D_0_15:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1activation_2re_lu_2Relu6m:0 -> CONV_2D_0_16:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
new_quantizer - CONFLICT CONV_2D_0_16:0 -> CONV_2D_0_16_activation:0 up -4.44<(i8-0.00)*0.03466466<4.40 -> -6.05<(i8-0.00)*0.04724409<6.00
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1expanded_convprojectBatch:0 -> CONV_2D_0_19:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1expanded_conv_1expandBatc:0 -> CONV_2D_0_20:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1expanded_conv_1depthwiseB_bac71eb7:0 -> DEPTHWISE_CONV_2D_0_21:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1expanded_conv_1projectBat:0 -> CONV_2D_0_22:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1expanded_conv_2expandBatc:0 -> CONV_2D_0_23:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1expanded_conv_2depthwiseB_95b291df:0 -> DEPTHWISE_CONV_2D_0_25:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1expanded_conv_2projectBat:0 -> CONV_2D_0_26:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1expanded_conv_3expandBatc:0 -> CONV_2D_0_27:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1expanded_conv_3depthwiseB_466f550a:0 -> DEPTHWISE_CONV_2D_0_29:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT expanded_conv_3squeeze_exciteC:0 -> CONV_2D_0_36:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
filter_mult - selecting SQ8 software kernel filter quantizer
new_quantizer - CONFLICT mn3d1activation_9re_lu_9Relu6m:0 -> CONV_2D_0_37:2 up chan<(i32-0.00)*chan<chan -> chan<(i32-0.00)*chan<chan
new_quantizer - CONFLICT CONV_2D_0_37:0 -> CONV_2D_0_37_activation:0 up -5.71<(i8-0.00)*0.04458371<5.66 -> -6.05<(i8-0.00)*0.04724409<6.00
Traceback (most recent call last):
  File "/home/vincent/anaconda3/envs/py39tf27/lib/python3.9/site-packages/cmd2/cmd2.py", line 1661, in onecmd_plus_hooks
    stop = self.onecmd(statement, add_to_history=add_to_history)
  File "/home/vincent/anaconda3/envs/py39tf27/lib/python3.9/site-packages/cmd2/cmd2.py", line 2081, in onecmd
    stop = func(statement)
  File "/home/vincent/anaconda3/envs/py39tf27/lib/python3.9/site-packages/cmd2/decorators.py", line 223, in cmd_wrapper
    return func(cmd2_app, args)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/interpreter/commands/open.py", line 146, in do_open
    self.__open_graph(args)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/interpreter/commands/open.py", line 115, in __open_graph
    G = create_graph(graph_file, opts=opts)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/importer/importer.py", line 53, in create_graph
    graph = importer.create_graph(filename, opts)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/importer/tflite2/tflite.py", line 137, in create_graph
    G.quantization = quantizer.quantize()
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/quantization/quantizer/new_quantizer.py", line 882, in quantize
    self.bfs_pass()
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/quantization/quantizer/new_quantizer.py", line 569, in bfs_pass
    self._bfs_pass(self._G, node, self._qset, visited)
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/quantization/quantizer/new_quantizer.py", line 489, in _bfs_pass
    qrec = self._resolve_qrec(
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/quantization/quantizer/new_quantizer.py", line 544, in _resolve_qrec
    qrec = self._call_quantizer(cur_G,
  File "/home/vincent/projects/other/gap_sdk/tools/nntool/quantization/quantizer/new_quantizer.py", line 384, in _call_quantizer
    raise MissingStatsError(
quantization.quantizer.new_quantizer.MissingStatsError: handler type requires activation stats to be present
EXCEPTION of type 'MissingStatsError' occurred with message: 'handler type requires activation stats to be present'

I'm new with using nntool and the GAP SDK,so manybe I missed some important step or limitations. Some guidence would be welcome.

Both models can be downloaded from here: https://surfdrive.surf.nl/files/index.php/s/9m2EjoerKtJHnBk

sousoux commented 2 years ago

Thanks for the report. Definitely an issue there.

sousoux commented 2 years ago

This is fixed internally and will be in the next release in the next few days.

sousoux commented 2 years ago

FYI. Fix is in new version pushed today. Please let us know if this fixes your issue.

plinnie commented 2 years ago

Yes, I can load and process both models now. Thanks!