## update: <br>2023.4.24<br>
- 解决的问题
1. 解决了权值参数相似度不正常，无法拟合曲线的问题。 
2. 修改了一些小bug
- 思路记录 <br>
在ResNet中遇到的权值参数相似度不太合理的问题在MobileNetV2中更加显著，使得MobileNet无法拟合曲线。考虑到PTQ后推理精度数据比较正常，则问题可能出在了权值参数的相似度计算上。<br>
我仔细检查了是否成功fold了BN，以及相应的ratio，计算js散度时是否使用的是匹配的两个权值参数，发现都没有问题。但在具体查看权值参数的数据时，发现了一些层的权值参数数据异常，也是这些异常层的js非常大干扰了整体的js计算。<br>
从tensorboard来观察，这些层的数据分布相似度应该与全精度模型很像，但js计算结果没能反应出这一点，对这些层的数据重点观察，他们有很多1或-1的值，因此我想到可能是对量化前后的模型权值参数先进行的normalize操作导致了数据分布变得不合理，进而导致了问题。<br>
考虑到normalize操作的本意应该是为了将量化前后的模型权值参数归一到同一个scale进而方便使用js散度计算距离，则可以考虑将量化后的模型的权值参数通过dequantize来恢复到与全精度模型相近的scale，而后再使用js散度计算距离。我将上述过程命名为fakefreeze. 经过实践，效果很好，重新计算的js散度反映的权值参数相似程度与tensorboard直接对数据分布的观察比较一致。
<img src = "fig/defreeze.png" class="h-90 auto">

## update: <br>2023.4.23<br>
1. 实现了MobileNetV2的PTQ量化
2. 目前存在一些问题：<br>
     虽然PTQ量化后的acc比较合理，但权值参数相似度比较不正常。无法拟合出合理的曲线。<br>
     对数据分析并通过tensorboard观察，一些计算量/参数量大的层在图中观察数据分布相似度较高，但计算出的js散度较大，又因为其加权权重较大，导致了整体的js距离很大。
3. 后续将检查出现问题的原因是代码设计问题还是加权系数不适用于MobileNetV2

