Hi,
I went through the FAQ point #10 of TIDeepLearningLibrary_UserGuide.pdf as well as the E2E thread e2e.ti.com/.../642684
As per my understanding of the two, the output in stats_tool_out.bin consists of 8-bit unsigned Q8 values which need to be adjusted by a scaling factor.
The scaling factor can be found from the "Out Q" value printed by the host emulation app. Consider this example:
Processing Frame Number : 0
Layer 1 : Max PASS : 16320 : 81600 Out Q : 45384 , 16384, TIDL_ConvolutionLayer, PASSED #MMACs = 74.76, 73.72, 95.53, Sparsity : -27.78, 1.39
Layer 2 : Max PASS : 51 : 163037 Out Q : 25419489 , 51, Failing at 0, 0, 0, 0 ref,out = 255,0
TIDL_ConvolutionLayer, FAILED!!!!!! #MMACs = 199.36, 193.17, 198.84, Sparsity : 0.26, 3.10
Layer 3 : Max FAIL : 0 : 256 Out Q : 1023047544 , 51, TIDL_ConvolutionLayer, PASSED #MMACs = 199.36, 190.86, 197.07, Sparsity : 1.15, 4.26
Layer 4 : Max FAIL : 0 : 256 Out Q : 1 , 51, TIDL_ConvolutionLayer, PASSED #MMACs = 199.36, 192.13, 197.85, Sparsity : 0.76, 3.63
Layer 5 : Max FAIL : 0 : 256 Out Q : 884 , 51, TIDL_ConvolutionLayer, PASSED #MMACs = 199.36, 191.87, 196.01, Sparsity : 1.68, 3.76
Layer 6 : Max FAIL : 0 : 256 Out Q : 813523 , 51, TIDL_ConvolutionLayer, PASSED #MMACs = 199.36, 191.93, 196.07, Sparsity : 1.65, 3.73
Layer 7 :TIDL_PoolingLayer, PASSED #MMACs = 0.09, 0.00, 0.09, Sparsity : 0.00, 100.00
Layer 8 : Max FAIL : 0 : 256 Out Q : 1875186466 , 51, TIDL_ConvolutionLayer, PASSED #MMACs = 797.44, 786.47, 796.49, Sparsity : 0.12, 1.38
Layer 9 : Max FAIL : 0 : 256 Out Q : 1192752606 , 51, TIDL_ConvolutionLayer, PASSED #MMACs = 797.44, 785.82, 796.15, Sparsity : 0.16, 1.46
Layer 10 : Max FAIL : 188577562 : 2136502786 Out Q : 1 , 206, Failing at 0, 0, 0, 0 ref,out = 127,-128
TIDL_ConvolutionLayer, FAILED!!!!!! #MMACs = 36.77, 35.31, 37.35, Sparsity : -1.58, 3.97
End of config list found !
In this case, for the laste layer, the scaling factor is 1 is Q8 format which is 1/256 in floating point. So to convert the output values from quantized to floating point format, I need to divide each of them by (1/256). Is this understanding correct?
I think there is some mistake in my understanding somewhere as the floating values I'm getting do not make sense at all. Please help me understand and correct it.
Thanks,
Bhargav