【干货】TensorFlow 实用技巧:模型盘点,使用情况及代码样例

本文将介绍当前 TensorFlow 上的所有抽象模型,描述每个模型的使用情况以及简单的代码样例。详细的示例请访问这里:https://github.com/c0cky/TensorFlow-in-a-Nutshell

递归神经网络(RNN)

使用情况:语言建模、机器翻译、词汇嵌入、文本处理

自从长短时记忆(LSTM)和门控递归单元(GRU)提出以后,递归神经网络(RNN)相较其他自然语言处理模型有了飞跃式的发展。RNN 的输入可以是表征字符的向量,可以经过训练在训练数据集的基础上生成新的句子。RNN 模型的好处在于保留句子中的情景,能够推演“cat sat on mat”的意思是猫在垫子上面。TensorFlow 出现以后,编写这类网络变得愈发简单。下面是一个简单样例:

卷积神经网络(CNN)

使用情况:图像处理、人脸识别、计算机视觉

卷积神经网络(CNN)特别之处在于,设计这种模型时它的输入就已经被定为图像。CNN 可以通过一个小窗口对一幅图像进行卷积处理(滑动),小窗口被称为核,这个小窗口从图像上滑过就生成了一个卷积特征。

生成卷积特征可以用于检测边缘,进而让网络能够描绘图像中的物体。

生成这幅图的卷积特征如下

下面是一个从 NMIST 数据集中识别手写体的代码样例:

前馈神经网络

使用情况:分类和回归

前馈神经网络在每一层都有感知机,会将输入的信息传递到下一层,网络的最后一层是输出。在给定的一层,节点之间不会直接相连。没有原始输入也没有输出的层就是隐藏层。

前馈神经网络的目标与使用反向传播的其他监督神经网络很类似,让输入有理想的、经过训练的输出。前馈神经网络是解决分类和回归问题的一些最简单有效的神经网络。下面我们将展示创造前馈神经网络识别手写数字有多么简单:

线性模型

使用情况:分类和回归

线性模型输入 X 值后,生成用于分类和回归 Y 值最适合的一条线。例如你手头有附近一组房屋的大小和价格,你就能用线性模型预测给定大小的房屋的价格。

需要指出的是,线性模型可以接受多个 X 特征输入。例如上面的房屋例子中,我们能根据房屋大小生成一个线性模型,也可以根据房间数量或者卫生间数量预测一栋房子的价格,分别是f(大小),f(房间数量),f(卫生间数量)。

支持向量机(SVM)

使用情况:当前仅用于二元分类

SVM 背后的基本概念是,对于二元可分的模式(pattern),存在一个最优的超平面。对于不可二元分类的数据,我们可以使用核函数将原始数据转换到一个新的平面上。SVM 将区分超平面的边缘区域最大化。SVM 尤其适用于高纬空间,如果维度比样本数量大也依然有效。

深广模型(Deep and Wide Models)

使用情况:推荐系统、分类和回归

深广网络(Deep and Wide Network)的细节可以参见这篇文章:谷歌发布 Deep and Wide 网络,开源 TensorFlow 模型。

深广网络将线性模型和前馈神经网络结合在一起,因此网络得出的预测既有记忆也有泛化功能。这类模型可以用于分类和回归问题。深广网络的预测相对较准,可以减少特征工程。由此,在两边都取得最好的结果。下面是一个简单的代码片段:

随机森林

使用情况:分类和回归

随机森林模型包含很多不同的分类树,每棵树都为分类投票。森林选择票数最多的那个分类。

随机森林不会过拟合,你可以随便增加树的数量而且速度也相对较快。你可以用下面这段代码跑一次 iris 数据。

贝叶斯强化学习

使用情况:分类和回归

在Github TensorFlow 页面 contrib 文件夹有一个库叫做 BayesFlow。BayesFlow 里面没有说明,只有一个 REINFORCE 算法。这个算法是由 Ronald Wiliams 提出的。

REward Increment = Nonnegative Factor * Offset Reinforcement * Characterisitic Eligibility

该网络试图解决直接的强化学习任务,每次试验得到强化值后对修正权重。在每次试验最后,每个权重都会学习速率因子乘以强化值减去基准乘以特征资格(characteristic eligibility)。Williams 在论文中讨论了使用反向传播训练 REINFORCE 网络的情况。

线性链条件随机场

使用情况:数据排序

CRF 是根据无向模型因子化(factorize)的条件概率分布。这种模型预测单一样本的标签,同时保持相邻样本的语境。CRF 与隐藏摩尔科夫模型十分类似。CRF 常用于图像分割和物体识别,在浅层分析、命名实体识别和基因查找(gene finding)中也有使用。

编译来源:https://hackernoon.com/tensorflow-in-a-nutshell-part-three-all-the-models-be1465993930#.xsno91gkc

本文分享自微信公众号 - 新智元(AI_era)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

Github 项目推荐 | TensorFlow 概率推理工具集 —— probability

Probability 是 TensorFlow 的概率推理工具集,它是集建模工具、推理算法、一些有用的模型和一般统计计算于一身的开发工具集合。利用 Tenso...

68240
来自专栏人人都是极客

基于树莓派和Tensowflow的物体识别-brain

近来这篇文章很火:How to build a robot that “sees” with $100 and TensorFlow (作者是Lukas,Cro...

1.2K100
来自专栏人人都是极客

三天速成 TensorFlow课件分享

这是一套香港科技大学发布的极简 TensorFlow 入门教程,三天全套幻灯片教程已被分享到 Google Drive。机器之心将简要介绍该教程并借此梳理 Te...

51290
来自专栏人人都是极客

移动和嵌入式设备上也能直接玩机器学习?

最近,机器学习(ML)话题大热,Arm也推出神经网络机器学习软件 Arm NN。这是一项关键技术,可在基于 Arm 的高能效平台上轻松构建和运行机器学习应用程序...

48190
来自专栏AI研习社

Github 项目推荐 | 用 TensorFlow 实现的模型集合

该库包含了大量用 TensorFlow 实现的不同模型。 官方模型(official models) 文件里是使用 TensorFlow 高级 API 的示例模...

46260
来自专栏AI研习社

Github 项目推荐 | 用于构建端对端对话系统和训练聊天机器人的开源库 —— DeepPavlov

DeepPavlov 是一个开源的会话 AI 库,建立在 TensorFlow 和 Keras 之上,用于以下设计: NLP和对话系统研究; 实施和评估复杂的会...

71590
来自专栏AI研习社

Github 项目推荐 | TensorFlow 项目模板架构最佳实践

一个简单且设计良好的架构对于任何深度学习项目来讲非常有必要,这里的 Tensorflow 项目模板经过了大量的实践,拥有简单性、良好的文件结构以及 OOP 设计...

58070
来自专栏AI研习社

代码+实战:TensorFlow Estimator of Deep CTR —— DeepFM/NFM/AFM/FNN/PNN

深度学习在 ctr 预估领域的应用越来越多,新的模型不断冒出。从 ctr 预估问题看看 f(x) 设计—DNN 篇(https://zhuanlan.zhihu...

2.9K90
来自专栏AI研习社

从 Encoder 到 Decoder 实现 Seq2Seq 模型

前言 好久没有更新专栏,今天我们来看一个简单的Seq2Seq实现,我们将使用TensorFlow来实现一个基础版本的Seq2Seq,主要帮助理解Seq2Se...

669130
来自专栏AI研习社

TensorFlow | 自己动手写深度学习模型之全连接神经网络

前半个多月总共写了三篇深度学习相关的理论介绍文章,另外两个月前,我们使用逻辑回归算法对sklearn里面的moons数据集进行了分类实验,最终准确率和召回率都达...

639100

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励