TensorFlow Hub介绍:TensorFlow中可重用的机器学习模块库
【方向】 2018-04-04 10:48:59 浏览750 评论0摘要: 本文对TensorFlow Hub库的介绍,并举例说明其用法。
在
软件开发中
,最常见的失误就是容易忽视共享代码库,而库则能够使软件开发具有更高的效率。
从某种意义上
来
说,
它改变了编程的过程
。我们
常常使用库构建块或模块,并将其连接在一起进行编程。
开发人员是如果使用库的呢? 除了共享代码之外,我们还 可以共享 预训练模型。共享预训练模型 能够使 开发人员 有针对性的开发 该模型,而 不需要 访问计算资源或 手头上用于训练模型的原始数据 。例如,NASNet 架构在GPU 上花费数千个小时进行训练 。通过 共享 学习到的权重,其他 开发人员就能够 更容易重用 库 和 构建模型或架构 。
机器学习模型 内部 的“ 组成部分 ” , 可以 使用TensorFlow Hub 进行打包和共享。从某种意义上 来讲 ,除了 架构本身 ,共享预先训练好的模型 的同时,也 共享 了 开发模型的计算时间和数据集。
为机器学习开发者提供 库产生了TensorFlow Hub 库 。TensorFlow Hub 库 是一个 在 TensorFlow 中进行 发布和重用中机器学习模块的平台。 我们 可以在其他类似的任务中重复使用一个模块 ( 一个TensorFlow 的独立片段及其权重 ) 。 开发人员 也 可以重用 一个 模块使用 一个更小 的数据集来训练模型, 来提高 泛化或加快 训练 速度。 下面来看几个具体的例子。
图像再训练
首先,我们从少量的训练数据开始——图像分类器。 现代图像识别模型具有数百万个参数, 如果从头开始训练,就需要 大量的标记数据和计算能力。使用 图像再训练 技术, 就可以使用很少的数据来训练模型, 并且计算时间 也 少得多。以下是TensorFlow Hub 的外观。
其 基本思想 是,用一个现成的图像识别模块从图像中提取特征 训练一个新的分类器。 正如你所看到的一样 ,TensorFlow Hub 模块可以在构建 TensorFlow 图时通过 URL (或文件路径) 进行 实例化。TensorFlow Hub 上有多种 模块 可供选择,包括NASNet 、 MobileNet (包括其最近的V2 ) 、 Inception 、ResNet 等。 想要使用某一 模块, 首先 导入TensorFlow Hub ,然后将模块的 URL 地址 复制/ 粘贴到代码中 即可 。
TensorFlow Hub 上提供 的 图像模块
每个模块都有一个 已定义 的接口, 在不了解其内在结构的情况下,也能够替换使用 。这个模块 提供了一个 检索预期图像大小 的方法: 只需提供 一组有 正确形状的图像,然后调用 该模块来 检索 图像的 特征表示。该模块负责 对图像进行 预处理,可以直接 将图像转换为其特征 表示 ,然后再构建一个线性模型或其他类型的分类器 。
请注意 , 我们使用的模块是由Google 开发的 ,并且是版本化的(因此模块在实验中不会改变)。 和普通Python 函数一样 ,我们也可以使用该模块来 构建 模型 的一部分。一旦导出到磁盘,模块是 独立的 ,无需访问创建和训练 该模块 的代码和数据(也可以发布代码和数据) ,也能供其他人所使用 。
文本分类
现在你想训练一个模型: 将电影评论分为正面或负面, 但是只有少量的训练数据 ( 比如只有 几百个正面和负面的电影评论)。由于 训练数据有限 ,因此 你打算使用 以前在大得多的语料库上训练过的词嵌入数据集。以下是使用TensorFlow Hub 思路 。
同样, 首先选择一个模块。TensorFlow Hub 提供 了 多种文本模块,包括 基于 各种语言(EN , JP , DE 和 ES )的神经网络语言模型,在维基百科上训练的 Word2vec 模型和 在Google 新闻上训练的 NNLM 嵌入。
在TensorFlow Hub 上 的 一些文本模块
在 这里, 我们使用一个模块来进行 文本 嵌入。 使用 上面的代码下载一个模块,用来 对一个句子进行 预处理,然后检索每个 块 的嵌入 ,这就意味着 可以直接 将 数据集中的句子 转换为 适合分类器的格式。该模块负责标记句子 和 其他逻辑 ( 如处理词典外的单词 ) 。预处理逻辑和嵌入都封装在一个模块中,使 在各种不同的数据集上的文字嵌入和预处理策略变得更加容易, 而不必 对代码进行大幅度的变动 。
使用TensorFlow Hub 的文本分类教程
通用句子编码器
我们还 分享了 一个 新的 TensorFlow Hub 模块! 下面是通用句子编码器。 它是在各种各样的数据集(“ 通用 ” )上训练的 句 级嵌入模块。 其功能是 语义相似性 、 自定义文本分类和聚类。
这篇文章 展示了如何在任何 一个 可嵌入句子的TF-Hub 模块上训练 一个 简单的二进制文本分类器。
如在图像再训练中, 使用 相对较少的标记数据使模块 适应某一 任务 , 如餐厅评论 。 查看本教程 以了解更多信息。
其他模块
TensorFlow Hub 不仅仅是图像和文本分类。用于 Progressive GAN 和Google地标深层特征 的 其他模块 请查看链接 。
注意事项
使用TensorFlow Hub 模块时 需要考虑几个重要因素: 首先,请记住模块包含 的 可运行的代码 ,一定要使用 可信来源的模块 ; 其次,正如所有 的 机器学习一样,公平性是一个 很重要的因素 。
上面的两个例子都 使用 了预先训练好的 大 数据集。当重复使用这样的数据集时,注意 其 包含的数据是否存在 偏差, 以及这些 是如何影响正在构建的模型和用户的。
以上为译文。
本文由北邮@爱可可-爱生活 老师推荐, 阿里云云栖社区 组织翻译。
文章原标题《Introducing TensorFlow Hub: A Library for Reusable Machine Learning Modules in TensorFlow》,译者:Mags,审校:袁虎。
文章为简译,更为详细的内容,请查看原文。
用云栖社区APP,舒服~
【云栖快讯】直播推荐--阿里巴巴高级数据库专家带你技术进阶之全文检索和相似搜索实践,还不快快报名~ 详情请点击 评论 (0) 点赞 (0) 收藏 (0)相关文章
- 精选10大机器学习开源项目 !(附链接)
- TensorFlow第二届开发者峰会
- Kubeflow实战系列:阿里云上使用JupyterHu…
- 码农の带娃绝技:TensorFlow+传感器,200美元…
- 2017年度GitHub上最热门的开源项目
- 使用机器学习预测天气(第三部分神经网络)
- 《面向机器智能的TensorFlow实践》安装Tenso…
- 《面向机器智能的TensorFlow实践》一导读
- PaddleFluid和TensorFlow基本使用概念…
- 用Docker玩转深度学习