资讯专栏INFORMATION COLUMN

TensorFlow Hub介绍:TensorFlow中可重用的机器学习模块库

sunny5541 / 1552人阅读

摘要:机器学习模型内部的组成部分,可以使用进行打包和共享。为机器学习开发者提供库产生了库。库是一个在中进行发布和重用中机器学习模块的平台。

摘要: 本文对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地址复制/粘贴到代码中即可。

每个模块都有一个已定义的接口,在不了解其内在结构的情况下,也能够替换使用。这个模块提供了一个检索预期图像大小的方法:只需提供一组有正确形状的图像,然后调用该模块来检索图像的特征表示。该模块负责对图像进行预处理,可以直接将图像转换为其特征表示,然后再构建一个线性模型或其他类型的分类器。

请注意,我们使用的模块是由Google开发的,并且是版本化的(因此模块在实验中不会改变)。和普通Python函数一样,我们也可以使用该模块来构建模型的一部分。一旦导出到磁盘,模块是独立的,无需访问创建和训练该模块的代码和数据(也可以发布代码和数据),也能供其他人所使用。

文本分类

现在你想训练一个模型:将电影评论分为正面或负面,但是只有少量的训练数据(比如只有几百个正面和负面的电影评论)。由于训练数据有限,因此你打算使用以前在大得多的语料库上训练过的词嵌入数据集。以下是使用TensorFlow Hub思路。

同样,首先选择一个模块。TensorFlow Hub提供了多种文本模块,包括基于各种语言(EN,JP,DE和ES)的神经网络语言模型,在维基百科上训练的Word2vec模型和在Google新闻上训练的NNLM嵌入。

在这里,我们使用一个模块来进行文本嵌入。使用上面的代码下载一个模块,用来对一个句子进行预处理,然后检索每个块的嵌入,这就意味着可以直接将数据集中的句子转换为适合分类器的格式。该模块负责标记句子和其他逻辑(如处理词典外的单词)。预处理逻辑和嵌入都封装在一个模块中,使在各种不同的数据集上的文字嵌入和预处理策略变得更加容易,而不必对代码进行大幅度的变动。

通用句子编码器

我们还分享了一个新的TensorFlow Hub模块!下面是通用句子编码器。它是在各种各样的数据集(“通用”)上训练的句级嵌入模块。其功能是语义相似性、自定义文本分类和聚类。

这篇文章展示了如何在任何一个可嵌入句子的TF-Hub模块上训练一个简单的二进制文本分类器。

如在图像再训练中,使用相对较少的标记数据使模块适应某一任务,如餐厅评论。查看本教程以了解更多信息。

其他模块

TensorFlow Hub不仅仅是图像和文本分类。用于Progressive GAN和Google地标深层特征的其他模块请查看链接。

注意事项

使用TensorFlow Hub模块时需要考虑几个重要因素:首先,请记住模块包含的可运行的代码,一定要使用可信来源的模块;其次,正如所有的机器学习一样,公平性是一个很重要的因素。

上面的两个例子都使用了预先训练好的大数据集。当重复使用这样的数据集时,注意其包含的数据是否存在偏差,以及这些是如何影响正在构建的模型和用户的。

本文由阿里云云栖社区组织翻译。

文章原标题《Introducing TensorFlow Hub: A Library for Reusable Machine Learning Modules in TensorFlow》,译者:Mags,审校:袁虎。

文章为简译,更为详细的内容,请查看原文。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11839.html

相关文章

  • TensorFlow发布机器学习框架TensorFlow.js

    摘要:今年,发布了面向开发者的全新机器学习框架。今年,围绕,谷歌同样做出了几项重大宣布发布新的官方博客与频道面向开发者的全新机器学习框架发布一系列新的库与工具例如等。提供了多种适用于张量的线性代数和机器学习运算的。 当时时间 3 月 30 日,谷歌 TenosrFlow 开发者峰会 2018 在美国加州石景山开幕,来自全球的机器学习用户围绕 TensorFlow 展开技术演讲与演示。去年的 Ten...

    malakashi 评论0 收藏0
  • 谷歌开源基于 TensorFlow 轻量级框架 AdaNet几大优势

    摘要:据介绍,在谷歌近期的强化学习和基于进化的的基础上构建,快速灵活同时能够提供学习保证。刚刚,谷歌发布博客,开源了基于的轻量级框架,该框架可以使用少量专家干预来自动学习高质量模型。 TensorFlow 是相对高阶的机器学习库,用户可以方便地用它设计神经网络结构,而不必为了追求高效率的实现亲自写 C++或 CUDA 代码。它和 Theano 一样都支持自动求导,用户不需要再通过反向传播求解...

    yck 评论0 收藏0
  • 使用机器学习预测天气(第三部分神经网络)

    摘要:概述这是使用机器学习预测平均气温系列文章的最后一篇文章了,作为最后一篇文章,我将使用的开源机器学习框架来构建一个神经网络回归器。请注意,我把这个声明推广到整个机器学习的连续体,而不仅仅是神经网络。 概述   这是使用机器学习预测平均气温系列文章的最后一篇文章了,作为最后一篇文章,我将使用google的开源机器学习框架tensorflow来构建一个神经网络回归器。关于tensorflow...

    mrcode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<