tensorflow wide and deep模型

2018-07-28  本文已影响0人  空空格格

论文地址:https://arxiv.org/abs/1606.07792
模型核心思想: 结合线性模型的记忆能力(memorization)和 DNN 模型的泛化能力(generalization),在训练过程中同时优化 2 个模型的参数,从而达到整体模型的预测能力最优.

模型输入:

wide侧:离散特征
deep侧:连续特征 + 离散特征

模型结构:
wdl.png
模型输出:
output.png
代码详解

tensorflow封装实现:
deep侧 :
embedding层 + 两层隐层 + 输出
wide侧:
使用embedding实现logistic回归(离散特征被映射为1维的数字)

源码解析:

deep侧embedding层将离散特征做embedding以后与连续特征concat作为神经元的输出

deep_embedding.png

deep侧fully全连接层

deep_fullyconnected.png

deep侧输出层

deep_logits.png

wide侧离散特征embedding后相加作为logits

wdl_embedding.png

weighted_sum_from_feature_columns函数中定义了lookuptable,利用传入的sparse_id去获得embedding以后的输出值

weighted_sum_from_feature_columns.png

结果:
deep + wide

logits.png
特征处理:

离散的特征通过sparse column with hash bucket将整数转换成对应的字符串表示形式,用字符串计算哈希值然后取模,转换后的特征值是0到hash_bucket_size的一个整数,再根据embedding_lookup_table转换成对应的embedding值
cross


本文遵守知识共享协议:署名-非商业性使用-相同方式共享 (BY-NC-SA)简书协议
转载请注明:作者空空格格,首发简书 Jianshu.com

上一篇下一篇

猜你喜欢

热点阅读