PaddlePaddle / models

Officially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.
Apache License 2.0
6.92k stars 2.91k forks source link

DeepFM的实现问题 #3289

Open stasi009 opened 5 years ago

stasi009 commented 5 years ago

看了Paddle_baseline_KDD2019下network_confv6.py中关于DeepFM的实现

作者在实现FM的embedding时,将embedding矩阵命名为: sparse_fm_param_attr = fluid.param_attr.ParamAttr(name="SparseFeatFactors", initializer=fluid.initializer.Normal( scale=1 / math.sqrt(sparse_feature_dim)))

而在实现Deep侧时,将名称也取为SparseFeatFactors param_attr=fluid.ParamAttr(name="SparseFeatFactors", initializer=fluid.initializer.Uniform()))

这样做的目的是为了实现DeepFM中“FM侧与DNN侧共享embedding”的设计思路吗?

如果是的话,又为什么二次调用的初始化方式不同?到底是按哪次的方式初始化的?

又为什么不在代码中,两次调用生成的embedding矩阵大小时,采用完全不同的长度变量?之所以没出问题,是因为这些变量的赋值恰好相同罢了。

mmglove commented 5 years ago

您好,deepFM代码可以参考:https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/ctr/deepfm