在线预估时,如何仅将最后一层的inference放到线上,其余部分在线下完成
Created by: hikkinight
背景类似demo中的电影推荐任务。为了性能考虑我们想尝试下如下图这种半全连接的网络。 线上预估的步骤是: 1、user_fc_layer在线上检索时只需计算一次得到 2、item_fc_layer可以多次查表得到 3、last_fc_layer因为是user_fc_layer和item_fc_layer concat后全连激活得来,因此需要在线上做N(N是候选item数量)次激活函数计算得到; 4、对last_fc_layer进行sigmod得到预估值
问题来了,我们如何在线上完成3和4两个步骤呢?即给定user_fc_layer和item_fc_layer情况下,如何得到last_fc_layer和最后的预估值呢?毕竟这个场景下不是原始的input,也就不能直接调用paddle c++ inference的api。
我能想到的方案: 因为paddle现在训练得到的模型文件是分层保留成二进的。通过反解last_fc_layer的模型文件,得到权重后在线上完成激活函数的计算。
有没有更好的方法?另外如果要反解模型文件的话有没有工具呢?