0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习开发者如何寻找满足自己需求的第三方库?

Tensorflowers 来源:未知 作者:李倩 2018-07-31 15:34 次阅读

在软件开发中容易被忽视的重要事情之一是共享代码存储库的想法。作为程序员,充分利用第三方库使开发更高效。从某种意义上说,他们改变了软件的开发过程。

机器学习开发者如何寻找满足自己需求的第三方库?当然,除了共享代码之外,我们还想分享预训练模型。共享预训练模型使开发人员可以根据不用领域、不用场景进行自定义,而无需访问计算资源或用于训练原始模型的数据。例如,NASNet 需要数千小时进行模型训练。通过共享学习的权重,模型开发人员可以使其他人更容易重用和构建工作。

机器学习模型的 “成分” 被打包,并通过 TensorFlow Hub 进行共享 。从某种意义上说,除了架构本身之外,共享预先训练的模型还共享用于开发模型所用的计算时间和数据集。

TensorFlow Hub 专门为机器学习开发者提供第三方库。在本文中,我们将简单介绍 TensorFlow Hub 中常用的几种库。TensorFlow Hub 是一个平台,主要被用于发布、发现和重用机器学习模块。一个模块,我们指的是 TensorFlow 图形的一个独立部分及其权重,可以在其他类似任务中重复使用。通过重用模块,开发人员可以使用较小的数据集训练模型,提升泛化能力或简单地加速训练。让我们看几个例子来说明这一点。

图像再训练

作为第一个例子,让我们看一下可以用来训练图像分类器的技术,仅从少量训练数据开始。现代图像识别模型具有数百万个参数,当然,从头开始训练需要大量标记数据和计算能力。使用称为图像重新训练的技术,您可以使用更少量的数据训练模型,并且使用更少的计算时间。如下所示:

1# Download and use NASNet feature vector 2module.

3module = hub.Module(

4“https://tfhub.dev/google/imagenet/nasnet_large/feature_vector/1")

5features = module(my_images)

6logits = tf.layers.dense(features, NUM_CLASSES)

probabilities = tf.nn.softmax(logits)

基本思想是重用现有的图像识别模块从图像中提取特征,然后在这些特征之上训练新的分类器。如您所见,在构造 TensorFlow 图时,可以从 URL(或从文件系统路径)实例化 TensorFlow Hub 模块。

TensorFlow Hub 上有多种模块供您选择,包括 NASNet,MobileNet(包括最近的 V2),Inception,ResNet 等。要使用模块,请导入 TensorFlow Hub,然后将模块的 URL 复制/粘贴到代码中。

每个模块都定义了接口,我们可以在很少或根本不了解其内部的情况下以可替换的方式使用。在这种情况下,此模块有一个方法可用于获取预期的图像大小。作为开发人员,您只需要提供正确形状的一批图像,并调用模块以获取特征表示。此模块负责为您预处理图像,因此您可以在一个步骤中直接从一批图像转到特征表示。从这里开始,您可以在这些基础上学习线性模型或其他类型的分类器。

请注意我们正在使用的模块由 Google 托管,并且已经进行版本控制。模块可以像普通的 Python 函数一样应用,以构建图形的一部分。一旦导出到磁盘,模块就是自包含的,并且可以被其他人使用而无需访问用于创建和训练它的代码和数据。

文本分类

我们来看看第二个例子。想象一下,你想训练一个模型,将电影评论分类为正面或负面,从少量的训练数据开始(比如几百个正面和负面的电影评论)。由于您的示例数量有限,因此您决定利用先前在更大的语料库中训练的单词嵌入数据集。如下所示:

1# Download a module and use it to retrieve word embeddings.

2embed = hub.Module(“https://tfhub.dev/google/nnlm-en-dim50/1")

3embeddings = embed([“The movie was great!”])

和以前一样,我们首先选择一个模块。TensorFlow Hub 有多种文本模块供您探索,包括各种语言的神经网络语言模型,以及在维基百科上训练的 Word2vec,以及在 Google 新闻上训练的 NNLM。

在这种情况下,我们将使用一个模块进行字嵌入。上面的代码下载一个模块,用它来预处理一个句子,然后获取每个标记的嵌入。

这意味着您可以直接从数据集中的句子转换为适合分类器的格式。该模块负责对句子进行标记,以及其他逻辑。预处理逻辑和嵌入都封装在一个模块中,可以更轻松地试验各种单词嵌入数据集或不同的预处理策略,而无需大幅更改代码。

如果您想尝试,请使用本教程进行操作,并了解 TensorFlow Hub 模块如何与 TensorFlow Estimators 配合使用。

注:教程链接

https://www.tensorflow.org/hub/tutorials/text_classification_with_tf_hub

通用句子编码器

我们还分享了一个新的 TensorFlow Hub 模块!下面是使用 Universal Sentence Encoder 的示例。它是一个句子级嵌入模块,适用于各种数据集。它擅长语义相似性,自定义文本分类和聚类。

与图像再训练一样,需要相对较少的标记数据使模块适应特定的任务。如下所示:

1# Use pre-trained universal sentence encoder to build text vector

2review = hub.text_embedding_column(

3“review”, “https://tfhub.dev/google/universal-sentence-encoder/1")

4features = {

5“review”: np.array([“this movie is a masterpiece”, “this movie was terrible”, …])

6}

7labels = np.array([[1], [0], …])

8input_fn = tf.estimator.input.numpy_input_fn(features, labels, shuffle=True)

9estimator = tf.estimator.DNNClassifier(hidden_units, [review])

10estimator.train(input_fn, max_steps=100)

查看本教程以了解更多信息

注:教程链接

https://www.tensorflow.org/hub/tutorials/text_classification_with_tf_hub

其他模块

TensorFlow Hub 不仅仅有图像和文本分类库。在网站上,你还可以找到几个 Progressive GAN 模型和 Google Landmarks Deep Local Features.

注意事项

使用 TensorFlow Hub 模块时有几个重要注意事项。首先,请记住模块包含可运行的代码。并始终使用受信任来源的模块。其次,与所有机器学习一样,fairness 是一个重要的考虑因素。我们上面展示的两个示例都利用了大量预先训练的数据集。重用这样的数据集时,重要的是要注意它包含哪些数据,以及它们如何影响您正在构建的产品及其用户。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 分类器
    +关注

    关注

    0

    文章

    152

    浏览量

    13180
  • 机器学习
    +关注

    关注

    66

    文章

    8416

    浏览量

    132616
  • tensorflow
    +关注

    关注

    13

    文章

    329

    浏览量

    60532

原文标题:TensorFlow Hub:可重用的机器学习模型库

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    proteus第三方元器件

    本帖最后由 eehome 于 2013-1-5 09:59 编辑 网上找的,_proteus第三方元器件。解压后直接安装。
    发表于 12-05 08:23

    如何加入第三方元件

    最近在做食堂管理系统的仿真,需要向元件中添加第三方元件,需要用到SLE4442卡,不知道上哪去下载含此类元件的,以及如何添加?
    发表于 04-21 13:00

    如何把第三方加到PROTEUS中?

    新手求教,弱弱的问下,下了一个第三方,说是要先安装,再添加路径,可是我下来的第三方没有看到安装文件啊。还望指教如何添加!
    发表于 06-15 22:32

    关于proteus第三方元件的问题

    下了两个第三方元件,然后就不知道放哪了,也不知道怎么调用。百度不到,求大神解答。谢了!
    发表于 11-13 08:56

    Proteus 第三方元件

    第三方元件,基本包含大部分常用元件的,分享给大家。
    发表于 04-16 22:06

    第三方dll调用问题!!!

    第三方dll,没有.h,labview怎么实现调用,dll可以用VS打开,类说明也有
    发表于 05-11 09:14

    proteus第三方元件

    proteus第三方元件
    发表于 05-26 10:44

    下载python第三方

    python第三方的下载
    发表于 07-02 13:12

    如何为Mixly开发第三方来增加新功能?

    Mixly基本原理是什么?它是如何工作的?如何为Mixly开发第三方来增加新功能?
    发表于 10-13 08:12

    鸿蒙开源第三方组件资料合集

    1、鸿蒙开源第三方组件——日志工具组件Timber_ohosTimber_ohos是一个带有小型可扩展API的日志工具组件,它可以给开发者提供统一的API接口,来记录不同类型的日志,帮助开发者管理
    发表于 03-23 09:53

    推动AR技术开源化 Blippar将向第三方开发者提供API套件

    英国增强现实公司Blippar在业界已经颇具名气,不同于传统科技公司对于自家技术的严格保密,他们现在想要将自己的技术推向更广阔的市场。日前,Blippar发布了他们拥有的AR和计算机视觉技术API,以供第三方开发者使用。
    发表于 11-08 10:08 618次阅读

    移动应用第三方自动检测和分类

    移动应用中,广泛使用第三方来帮助开发和增强应用功能.很多关于移动应用分析以及访问控制的研究工作,需要在分析之前对第三方进行检测、过滤或者
    发表于 12-29 14:35 0次下载

    鸿蒙开发中怎么引入第三方

    Android 发展到现在不仅提供了很多 API,还提供了很多第三方。这降低了我们开发者开发难度,提升了开发效率,让应用
    的头像 发表于 10-11 14:11 4067次阅读

    在AWorks中怎样去修改第三方的源码呢

    AWorks对许多的第三方进行了封装,开发者只需要调用封装好的接口就可以了,无需了解底层实现。一般情况下,这种开发方式十分简便高效。在一些特殊情况下,
    的头像 发表于 07-03 14:27 1497次阅读

    学会安装第三方开源

    你好,我是爱吃鱼香ROS的小鱼。秉承着拒绝重复造轮子的ROS精神,本节我们学习如何在我们的工程里安装第三方开源
    的头像 发表于 07-13 14:35 1002次阅读
    学会安装<b class='flag-5'>第三方</b>开源<b class='flag-5'>库</b>