TensorFlowHub介绍:TensorFlow中可重⽤的机器学习模块库
摘要:本⽂对TensorFlow Hub库的介绍,并举例说明其⽤法。
在软件开发中,最常见的失误就是容易忽视共享代码库,⽽库则能够使软件开发具有更⾼的效率。从某种意义上来说,它改变了编程的过程。我们常常使⽤库构建块或模块,并将其连接在⼀起进⾏编程。
开发⼈员是如果使⽤库的呢?除了共享代码之外,我们还可以共享预训练模型。共享预训练模型能够使开发⼈员有针对性的开发该模型,⽽不需要访问计算资源或⼿头上⽤于训练模型的原始数据。例如,NASNet架构在GPU上花费数千个⼩时进⾏训练。通过共享学习到的权重,其他开发⼈员就能够更容易重⽤库和构建模型或架构。
机器学习模型内部的“组成部分”,可以使⽤TensorFlow Hub进⾏打包和共享。从某种意义上来讲,除了架构本⾝,共享预先训练好的模型的同时,也共享了开发模型的计算时间和数据集。
为机器学习开发者提供库产⽣了TensorFlow Hub库。TensorFlow Hub库是⼀个在TensorFlow中进⾏发布和重⽤中机器学习模块的平台。我们可以在其他类似的任务中重复使⽤⼀个模块(⼀个TensorFlow的独⽴⽚段及其权重)。开发⼈员也可以重⽤⼀个模块使⽤⼀个更⼩的数据集来训练模型,来提⾼泛化或加快训练速度。下⾯来看⼏个具体的例⼦。
图像再训练
⾸先,我们从少量的训练数据开始——图像分类器。现代图像识别模型具有数百万个参数,如果从头开始训练,就需要⼤量的标记数据和计算能⼒。使⽤图像再训练技术,就可以使⽤很少的数据来训练模型,并且计算时间也少得多。以下是TensorFlow Hub的外观。
tensorflow版本选择其基本思想是,⽤⼀个现成的图像识别模块从图像中提取特征训练⼀个新的分类器。正如你所看到的⼀
样,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模块时需要考虑⼏个重要因素:⾸先,请记住模块包含的可运⾏的代码,⼀定要使⽤可信来源的模块;其次,正如所有的机器学习⼀样,公平性是⼀个很重要的因素。
上⾯的两个例⼦都使⽤了预先训练好的⼤数据集。当重复使⽤这样的数据集时,注意其包含的数据是否存在偏差,以及这些是如何影响正在构建的模型和⽤户的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。