参考
知乎
-
FM因子分解机的原理、公式推导、Python实现和应用。其中return K.mean(a-b, 1, keepdims=True)*0.5有问题吧?应该是return K.sum(a-b, 1, keepdims=True)*0.5?
-
CTR预估模型:DeepFM/Deep&Cross/xDeepFM/AutoInt代码实战与讲解。二阶和DNN部分,只用了稀疏特征,缺少连续特征。
-
用keras实现deepFM。只用3个特征,统一性和扩展性不强。
csdn
博文1代码详解
增加了注释便于理解。
import tensorflow as tf
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
K = tf.keras.backend
# 自定义FM的二阶交叉层
class FMLayer(tf.keras.layers.Layer):
# FM的k取4(演示方便)
def __init__(self, input_dim, output_dim=4, **kwargs):
self.input_dim = input_dim
self.output_dim = output_dim
super(FMLayer, self).__init__