本教程由深度学习中文社区(Studydl.com)持续发布与更新.

在前面的章节中, 我们介绍了一些TensorFlow的入门教程, 以及在最近两节中我们介绍了一下怎么在Android与浏览器上使用TensorFlow开发深度学习应用. 从这期开始我们将推出TensorFlow进阶教程, 主要讲解一些TensorFlow的使用技巧. 在后面的时间里我们还会推出一系列的PyTorch的入门教程, 希望大家多多转发与关注。

在深度学习研究过程中, 共享预训练模型使开发人员可以根据不用领域、不用场景进行自定义,而无需访问计算资源或用于训练原始模型的数据。例如,NASNet 需要数千小时进行模型训练。通过共享学习的权重,模型开发人员可以使其他人更容易重用和构建工作。

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

图像再训练

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

TensorFlow进阶教程(一):使用TFHub模型10行代码快速开发AI程序-深度学习中文社区

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

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

TensorFlow进阶教程(一):使用TFHub模型10行代码快速开发AI程序-深度学习中文社区

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

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

文本分类

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

TensorFlow进阶教程(一):使用TFHub模型10行代码快速开发AI程序-深度学习中文社区

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

TensorFlow进阶教程(一):使用TFHub模型10行代码快速开发AI程序-深度学习中文社区

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

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

TensorFlow进阶教程(一):使用TFHub模型10行代码快速开发AI程序-深度学习中文社区

‍通用句子编码器

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

TensorFlow进阶教程(一):使用TFHub模型10行代码快速开发AI程序-深度学习中文社区

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

TensorFlow进阶教程(一):使用TFHub模型10行代码快速开发AI程序-深度学习中文社区

其他模块

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