介绍
非专业的nlp、图像工程师,tensorflow调包工程师,注重快速实现,那么,让我们一起做点有趣的事情吧! 这个工程的目的是将自己在工程和学术研究中,一些应用到深度学习的思路和方法整理汇总出来:
- 帮助深度学习入门同学快速上手
- 提供一些在现有的机器学习方向上的新的方向和思路的整理
- 解锁思维的禁锢
关于深度学习相关的浅入浅出的介绍,可以快速入门一下浅入浅出深度学习理论实践。
关于深度学习相关的点击预估的介绍,可以快速入门一下yoho注册概率预估。
关于深度学习相关的图像识别的介绍,可以快速入门一下基于SSD下的图像内容识别(一),基于SSD下的图像内容识别(二)。
关于深度学习相关的目标向量化的介绍,可以快速入门一下深度学习下的电商商品推荐。
关于深度学习相关的多层感知机的介绍,可以快速入门一下基于Tensorflow实现多层感知机网络MLPs。
关于深度学习相关的deepfm的介绍,可以快速入门一下基于Tensorflow实现DeepFM。
关于深度学习相关的Deep Neural Networks for YouTube Recommendations的介绍,可以快速入门一下利用DNN做推荐的实现过程总结。
关于深度学习相关的RCNN_GRU的介绍,实在没空写博客了,sorry
关于深度学习相关的TextCNN的介绍,实在没空写博客了,sorry
关于深度学习相关的Bert做fine-tune的代码(类似接口,具体实现按照时间项目去改),我每次做nlp的baseline的时候,都是在这个代码上进行更改,主要是ner和classify两个问题的模版,可以快速入门一下Bert你需要知道的一些细节
关于深度学习相关的XDeepFM的介绍,可以快速入门一下xDeepFM架构理解及实现。
关于深度学习相关的DeepInterestNetwork的介绍,实在没空写博客了,sorry
关于深度学习相关的Estimator框架模版的介绍,原因有三:
- 组内同学开发不规范,tf代码风格包括:slim,keras,contrib,graph各式各样的写法,混乱不好管理
- 代码逻辑不清晰,随处定义变量,随处定义函数
- 由tornado服务迁往serving服务,需要更新的更频繁,接受的代码更加简单易上手,不需要高频去查各种tf接口
关于深度学习相关的Doc2Vec的介绍,可以快速入门一下Distributed Representations of Sentences and Documents
项目
RNN_applied_classification
利用GRU,提取用户的行为时序稀疏特征,并产出stack初始层的思路
CNN_applied_classification
利用全连接+CNN,提取稀疏特征,并产出stack初始层的思路
Wide & Deep
Google 推荐算法的代码修正,原始代码来源于网络但是不能执行及流程不完整,修复代码demo,现可以直接复制后使用
网络结构
注意
在Linux环境下,tensorflow==1.0.0会有如下的报错,而MacBook环境下,tensorflow=1.0.0就不会报错:
double free or corruption (!prev): 0x0000000001f03dd0 ***
解决方法是更新版本到1.6.0(其他版本我没试),官方之前有人提过issue,大家注意一哈!
SSD_object_recognition
利用ssd直接实现物体区域识别
图片版效果:
视频版本地址:
Word2vec_recommend
利用样本频率+Huffman树路径最大概率的方法,实现特征向量化的思路
MLPs
DeepFm
Deep Neural Networks for YouTube Recommendations
最近在利用来自google的YouTube团队发表在16年9月的RecSys会议的论文Deep Neural Networks for YouTube Recommendations做用户个性化商品推荐,看到不少论文上的理论总结分析,都很精彩,我手动实现了一遍,总结了一些实际工程中的体会,给大家也给自己一个总结交代。
normal_version:按照论文未修改的basemodel
attention_version:在basemodel的基础上,加了attention机制(线性attention/rnn attention)
record_dataformat_version:在basemodel的基础上,利用record机制存储数据,加快训练速度
RCNN_GRU
- RCNN_GRU/model: 初始化模型的脚本
- RCNN_GRU/process: 数据预处理的脚本
TextCNN
在做黄反广告文本的识别:
- 初版本是朴素贝叶斯+LR(recall:72%,precision:88%)
- 优化版是CBOW+LR(recall:77%,precision:88%)
- 进阶版是CBOW/GLOVE+MLR(recall:85%,precision:91%)
- 当前版是[D2V,CBOW,GLOVE]+TextCNN(recall:90%,precision:92%)
Bert
Bert+BiLSTM+Crf/FNN,关于Bert的更多可以参考我的ppt分享
XDeepFM
主要把网络架构梳理了一边,后面项目结束再把整体的工程代码开源出来。
DeepInterestNetwork
和常见的网络上的版本不同的有两个地方的修改,我司实际使用上比官方版本要提升0.2pp的auc:
- dice中的predict的bn过程采取了训练集的期望方差
- 在fc的过程中用了tf.tanh替代tf.sigmoid/dice/prule
Estimator框架模版
- data
- 数据构造
- DataMake.py
- 常规构造方法
- DeepFmDataMake.py
- DeepFM的数据构造
- TextCNNDataMake.py
- TextCNN的数据构造
- model
- 模型框架
- DeepFM
- TextCNN
- 模型框架
- serving
- docker部署
- serving_grpc_client.py
- 调用serving服务
Estimator框架重新写了DeepFm和TextCNN,总的来说,代码量差不多只是更加规范化了,以后建议以Estimator框架为模版开发。
Doc2Vector
来自于Distributed Representations of Sentences and Documents
工具
请参考:requirements.txt
其他
- E-mail:[email protected]