

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Object2Vec 算法
<a name="object2vec"></a>

Amazon SageMaker AI Object2Vec 算法是一种高度可定制的通用神经嵌入算法。它可以学习高维对象的低维密集嵌入。将以某种方式学习嵌入，以便在嵌入空间中保留原始空间中的对象对之间的关系语义。例如，您可以使用学到的嵌入有效地计算对象的最近邻点，以及可视化低维空间中的相关对象的自然聚类。您还可以将嵌入用作下游指导式任务中相应对象的功能，例如分类或回归。

Object2Vec 概括了众所周知的 Word2Vec 嵌入技术，用于在人工智能中优化的单词。 SageMaker [BlazingText 算法](blazingtext.md)有关讨论如何将 Object2Vec 应用于一些实际用例的博客文章，请参阅[亚马逊 A](https://www.amazonaws.cn/blogs/machine-learning/introduction-to-amazon-sagemaker-object2vec/) I Object2Vec 简介。 SageMaker 

**Topics**
+ [Object2Vec 算法的 I/O 接口](#object2vec-inputoutput)
+ [Object2Vec 算法的 EC2 实例建议](#object2vec--instances)
+ [Object2Vec 示例笔记本](#object2vec-sample-notebooks)
+ [Object2Vec 工作原理](object2vec-howitworks.md)
+ [Object2Vec 超参数](object2vec-hyperparameters.md)
+ [优化 Object2Vec 模型](object2vec-tuning.md)
+ [Object2Vec 训练的数据格式](object2vec-training-formats.md)
+ [用于 Object2Vec 推理的数据格式](object2vec-inference-formats.md)
+ [Object2Vec 的编码器嵌入](object2vec-encoder-embeddings.md)

## Object2Vec 算法的 I/O 接口
<a name="object2vec-inputoutput"></a>

您可以在很多输入数据类型上使用 Object2Vec，包括以下示例。


| 输入数据类型 | 示例 | 
| --- | --- | 
| 语句-语句对 | “A soccer game with multiple males playing.” 和“Some men are playing a sport.” | 
| 标签-序列对 | “Titanic”电影的流派标签（如“Romance”和“Drama”）及其简短描述“James Cameron's Titanic is an epic, action-packed romance set against the ill-fated maiden voyage of the R.M.S. Titanic. She was the most luxurious liner of her era, a ship of dreams, which ultimately carried over 1,500 people to their death in the ice cold waters of the North Atlantic in the early hours of April 15, 1912.” | 
| 客户-客户对 | Jane 的客户 ID 和 Jackie 的客户 ID。 | 
| 产品-产品对 | 足球的产品 ID 和篮球的产品 ID。 | 
| 项审查用户-项对 | 用户的 ID 以及她购买的商品，例如苹果、梨和橙子。 | 

要将输入数据转换为支持的格式，必须对其进行预处理。目前，Object2Vec 本身支持两种类型的输入：
+ 离散标记，它表示为单个 `integer-id` 的列表。例如 `[10]`。
+ 离散标记序列，它表示为 `integer-ids` 列表。例如 `[0,12,10,13]`。

每个对中的对象可以是不对称的。例如，这些对可以是 (标记, 序列)、(标记, 标记) 或 (序列, 序列)。对于标记输入，该算法支持简单嵌入作为兼容编码器。对于标记向量序列，该算法支持以下编码器：
+  平均池化嵌入
+  分层卷积神经网络 ()CNNs，
+  多层双向长短期记忆 (Bi) LSTMs 

每个对的输入标签可以是以下内容之一：
+ 分类标签，表示对中的对象之间的关系 
+ 分数，表示两个对象之间的相似性强度 

对于分类中使用的分类标签，该算法支持交叉熵损失函数。对于回归中使用的基于评级/分数的标签，该算法支持均方误差 (MSE) 损失函数。在创建模型训练作业时，请使用 `output_layer` 超参数指定这些损失函数。

## Object2Vec 算法的 EC2 实例建议
<a name="object2vec--instances"></a>

您使用的 Amazon Elastic Compute Cloud (Amazon EC2) 实例的类型取决于是训练还是运行推理。

在 CPU 上使用 Object2Vec 算法训练模型时，请从 ml.m5.2xlarge 实例开始。要在 GPU 上进行训练，请从 ml.p2.xlarge 实例开始。如果此实例的训练时间过长，则可以使用更大的实例。目前，Object2Vec 算法只能在单个机器上训练。但是，它确实提供了对多个的支持 GPUs。Object2Vec 支持使用 P2、P3、G4dn 和 G5 GPU 实例系列进行训练和推理。

对于使用经过训练的 Object2Vec 模型（具有深层神经网络）的推理，我们建议使用 ml.p3.2xlarge GPU 实例。由于 GPU 内存稀缺，可以指定 `INFERENCE_PREFERRED_MODE` 环境变量来优化是将 [GPU 优化：分类或回归](object2vec-inference-formats.md#object2vec-inference-gpu-optimize-classification)还是将 [GPU 优化：编码器嵌入](object2vec-encoder-embeddings.md#object2vec-inference-gpu-optimize-encoder-embeddings)推理网络加载到 GPU 中。

## Object2Vec 示例笔记本
<a name="object2vec-sample-notebooks"></a>
+ [使用 Object2Vec 将句子编码为固定长度嵌入](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/object2vec_sentence_similarity/object2vec_sentence_similarity.html)