PaddlePaddle / PaddleRec

Recommendation Algorithm大规模推荐算法库,包含推荐系统经典及最新算法LR、Wide&Deep、DSSM、TDM、MIND、Word2Vec、Bert4Rec、DeepWalk、SSR、AITM,DSIN,SIGN,IPREC、GRU4Rec、Youtube_dnn、NCF、GNN、FM、FFM、DeepFM、DCN、DIN、DIEN、DLRM、MMOE、PLE、ESMM、ESCMM, MAML、xDeepFM、DeepFEFM、NFM、AFM、RALM、DMR、GateNet、NAML、DIFM、Deep Crossing、PNN、BST、AutoInt、FGCNN、FLEN、Fibinet、ListWise、DeepRec、ENSFM,TiSAS,AutoFIS等,包含经典推荐系统数据集criteo 、movielens等
https://paddlerec.readthedocs.io/
Apache License 2.0
4.16k stars 718 forks source link

关于rank目录下所有涉及DNN组网的一个bug #729

Open tz28 opened 2 years ago

tz28 commented 2 years ago

rank目录下涉及到DNN组装的模型全部存在一个bug,在dnn组网中激活函数没有加入到网络中,如下所示:

        acts = ["relu" for _ in range(len(self.layer_sizes))] + [None]
        self._mlp_layers = []
        for i in range(len(self.layer_sizes)):  # + 1):
            linear = paddle.nn.Linear(
                in_features=sizes[i],
                out_features=sizes[i + 1],
                weight_attr=paddle.ParamAttr(
                    initializer=paddle.nn.initializer.Normal(
                        std=1.0 / math.sqrt(sizes[i]))))
            self.add_sublayer('linear_%d' % i, linear)
            self._mlp_layers.append(linear)
            if acts[i] == 'relu':
                act = paddle.nn.ReLU()
                self.add_sublayer('act_%d' % i, act)

少了语句self._mlp_layers.append(act),导致后面在dnn forward时(如下所示代码),激活函数完全没有起作用。

        for n_layer in self._mlp_layers:
            dnn_feat = n_layer(dnn_feat)

存在此bug的模型有: DCN:https://github.com/PaddlePaddle/PaddleRec/blob/master/models/rank/dcn/net.py#L90 DCNV2:https://github.com/PaddlePaddle/PaddleRec/blob/master/models/rank/dcn_v2/net.py#L171 deepfefm:https://github.com/PaddlePaddle/PaddleRec/blob/master/models/rank/deepfefm/net.py#L226 deepfm:https://github.com/PaddlePaddle/PaddleRec/blob/master/models/rank/deepfm/net.py#L166

太多了,你们查下吧,我不列举了。

wangzhen38 commented 2 years ago

收到,多谢反馈~