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

在软件开发中容易被忽视的重要事情之一是共享代码存储库的想法。作为程序员,充分利用第三方库使开发更高效。从某种意义上说,他们改变了软件的开发过程。
机器学习开发者如何寻找满足自己需求的第三方库?当然,除了共享代码之外,我们还想分享预训练模型。共享预训练模型使开发人员可以根据不用领域、不用场景进行自定义,而无需访问计算资源或用于训练原始模型的数据。例如,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 是一个重要的考虑因素。我们上面展示的两个示例都利用了大量预先训练的数据集。重用这样的数据集时,重要的是要注意它包含哪些数据,以及它们如何影响您正在构建的产品及其用户。

清华团队研发出新型材料,变形机器人有望成真
基于CELL BE处理器实现高性能安全机制的应用程序设计
MK9218 - 100V 同步降压DC/DC控制器:广泛应用的高性能解决方案
西门子携手Hackrod变汽车的制造方式 利用人工智能和3D打印定制汽车
BOSE推出QC35II玫瑰金限量版 外更加时尚美观
机器学习开发者如何寻找满足自己需求的第三方库?
高频系列:单词拆分问题
胰腺癌使用机器人手术更安全 但也并非适用于所有的患者
数显感应式电笔使用方法
1140亿个晶体管,苹果最强芯M1 Ultra登场!iPhone SE3:A15、5G都齐了
ad转换器性能指标
安霸半导体发布最新AI控制器芯片CV3系列
关于蜂窝IoT解决方案的介绍和分析
物联网时代 我们变得毫无隐私
亚马逊用无人机送货的场景唤起了快递大佬们“快递上天”的幻想
实现灵活的多通道电池化成和测试
什么是蓝牙?它的主要作用是什么?手机的蓝牙功能到底有什么作用?
AMD | 嵌入式单晶片处理器 R1000发布,满足工业运算需求
国产LED关键设备与材料研讨会在中山小榄成功召开
开盘涨超88%!又一百亿市值半导体IPO诞生