tensorflow-DeepFM
tensorflow-DeepFM copied to clipboard
Tensorflow implementation of DeepFM for CTR prediction.
你好,我想请教一下deepfm模型的输入可以是评论文本表示的user,item 特征吗?
hi,看了代码实现,有个疑问,连续特征乘以k维需要训练的embedding向量(1个数分解为多个数),这样对连续特征也带来了信息损失吧?
dfm_params = { "use_fm": True, "use_deep": True, "embedding_size": 8, "dropout_fm": [1.0, 1.0], "deep_layers": [32, 32], "dropout_deep": [0.5, 0.5, 0.5], "deep_layers_activation": tf.nn.relu, "epoch": 30, "batch_size": 1024, "learning_rate": 0.001, "optimizer_type": "adam", "batch_norm":...
sparse_index = tf.placeholder(tf.int64, [None, 2]) sparse_ids = tf.placeholder(tf.int64, [None]) sparse_values = tf.placeholder(tf.float32, [None]) sparse_shape = tf.placeholder(tf.int64, [2]) ids = tf.SparseTensor(sparse_index, sparse_ids, sparse_shape) values = tf.SparseTensor(sparse_index, sparse_values, sparse_shape) 这样子的sparse输入
def _initialize_weights(self): weights = dict() # embeddings # FM 组件 weights["feature_embeddings"] = tf.Variable( tf.random_normal([self.feature_size, self.embedding_size], 0.0, 0.01), name="feature_embeddings") # feature_size * K 上面是初始化权重的方法 但是我们如何能直接初始化一个特征表示的矩阵weights["feature_embeddings"],每个特征表示的向量 不是应该通过相应的嵌入层网络获得吗? 还有伴随着训练完成 ,为什么weights["feature_embeddings"]会发生变化??
看了下代码,整型类的特征似乎和category和binary类型的特征是当作一种类型处理的?是不是要把整型转换成float,然后再放入NUMERIC_COLS呢? 我试着直接将整型类特征放入NUMERIC_COLS,跑的时候结果不太对。