专栏算法工具链QAT量化

QAT量化

已解决
默认328322024-07-22
68
6
J5 J5_OE_1.1.74 在算法工具链7.3快速入门 获取浮点模型中,说的是在模型输入前插入 QuantStub在模型输出后插入 DequantStub,为什么代码里面却是在forward里面插入的?
算法工具链
技术深度解析征程5
评论3
0/1000
  • HandsomeChen
    Lv.1
    是的,自己的算法也是在forward里插入的。你可能误解了文档的意思,在模型前后插入,和在forward中插入并不矛盾

    打个比方,一个fp32的网络的forward函数是这样的:

    你可以把模型理解为forward,也可以把模型理解为self.net,如果你把模型理解为后者,那么就不会产生误解了。

    现在我需要在模型输入前后,也就是self.net(x)前后插入量化和反量化结点,插入结点后的模型forward函数会像这样:

    这个不是截图,是手敲的代码和注释

    2024-07-22
    2
    1
    • 默认32832回复HandsomeChen:
      收到,谢谢你耐心的解答,希望以后有机会当面感谢你!请问如果我的模型有多个forward函数,那我需要在每个forward函数里面插入量化和反量化节点是吧。
      2024-07-22
      0
  • HandsomeChen
    Lv.1

    不客气,互相学习交流。:)

    不知道我理解的对不对,多个forward函数指的是这样吗?

    如果是这样的话,没有必要在每个forward里都插入,只需要在最外层的forward函数的最开始和末尾插入即可,像这样:
    推荐看一下pytorch的量化方法,那边资料更多,社区更强大。
    2024-07-23
    1
    1
    • 默认32832回复HandsomeChen:

      好的,谢谢你的解答。

      2024-07-25
      1
  • HandsomeChen
    Lv.1

    非官方。

    因为插入的量化和反量化是需要实际参与网络运算的,所以写在forward里

    2024-07-22
    0
    1
    • 默认32832回复HandsomeChen:
      谢谢你的解答,但是文档里说的是在模型的输入前和输出后插入,如果是我自己的算法也是在forward里面插入吗?请问能分享一下你截图的这个文件吗?
      2024-07-22
      0