FrozenGene commented on issue #4828: [QNN][TFLite] TFLite rounding mode support
URL: https://github.com/apache/incubator-tvm/pull/4828#issuecomment-595200848
 
 
   > The problem is located and solved. The discrepancy comes from average 
pooling calculation when input is integral type. tflite does a UPWARD rounding 
after the division in avg_pool but current topi implementation of avg_pool does 
of FLOOR after the division.
   > 
   > The fix is added and tested locally on cpu. Now the qnn tests in tflite 
test_forward has rtol and atol set to 0, which should meet the bit-exact 
exectution requirement.
   > 
   > @FrozenGene @anijain2305 @tqchen @u99127 Please have another look, thanks!
   
   Thanks @LiangHao151941 !
   
   Maybe we have to handle it a bit more. Please see: 
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/kernels/internal/optimized/integer_ops/pooling.h#L300
   
   The default behaviour of TFLite is `optimize`, so TFLite will run `optimzed` 
of `kernel` directory. For average pool, it has two conditions. The type of 
`acc` will be `uint16` if `params.filter_height * params.filter_width <= 16 * 
16` , otherwise, the type of `acc` will be `int32` as our implementation. If we 
want to keep bit-exact result, we should handle it here too. You remind me this 
situation, I met this bug before if we don't handle it.
   
   > Another way is we provide rounding args for qnn.add / qnn.mul / 
qnn.conconcate, because they use requantize in fact too, so they need rounding.
   
   We should handle these ops too.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to