文档反馈

问题文档片段

问题文档片段包含公式时,显示为空格。

提交类型
issue

有点复杂...

找人问问吧。

请选择提交类型

问题类型
规范和低错类

- 规范和低错类:

- 错别字或拼写错误,标点符号使用错误、公式错误或显示异常。

- 链接错误、空单元格、格式错误。

- 英文中包含中文字符。

- 界面和描述不一致,但不影响操作。

- 表述不通顺,但不影响理解。

- 版本号不匹配:如软件包名称、界面版本号。

易用性

- 易用性:

- 关键步骤错误或缺失,无法指导用户完成任务。

- 缺少主要功能描述、关键词解释、必要前提条件、注意事项等。

- 描述内容存在歧义指代不明、上下文矛盾。

- 逻辑不清晰,该分类、分项、分步骤的没有给出。

正确性

- 正确性:

- 技术原理、功能、支持平台、参数类型、异常报错等描述和软件实现不一致。

- 原理图、架构图等存在错误。

- 命令、命令参数等错误。

- 代码片段错误。

- 命令无法完成对应功能。

- 界面错误,无法指导操作。

- 代码样例运行报错、运行结果不符。

风险提示

- 风险提示:

- 对重要数据或系统存在风险的操作,缺少安全提示。

内容合规

- 内容合规:

- 违反法律法规,涉及政治、领土主权等敏感词。

- 内容侵权。

请选择问题类型

问题描述

点击输入详细问题描述,以帮助我们快速定位问题。

mindspore.nn.MultiFieldEmbeddingLookup

class mindspore.nn.MultiFieldEmbeddingLookup(vocab_size, embedding_size, field_size, param_init='normal', target='CPU', slice_mode='batch_slice', feature_num_list=None, max_norm=None, sparse=True, operator='SUM', dtype=mstype.float32)[源代码]

根据指定的索引和字段ID,返回输入Tensor的切片。此操作支持同时使用multi hot和one hot查找嵌入。

说明

当'target'设置为 'CPU' 时,此模块将使用P.EmbeddingLookup().set_device('CPU')指定'offset = 0'的查找表。

当'target'设置为 'DEVICE' 时,此模块将使用P.Gather()指定'axis = 0'的查找表。

具有相同 field_ids 的向量将由'operator'组合,例如'SUM'、'MAX'和'MEAN'。确保填充ID的 input_values 为零,以便忽略它们。如果字段绝对权重之和为零,最终输出将为零。该类仅支持['table_row_slice', 'batch_slice', 'table_column_slice']。对于Ascend设备上的'MAX'操作,存在 batch_size(seq_length+field_size)<3500 的约束。

参数:
  • vocab_size (int) - 嵌入词典的大小。

  • embedding_size (int) - 每个嵌入向量的大小。

  • field_size (int) - 最终输出的字段大小。

  • param_init (Union[Tensor, str, Initializer, numbers.Number]) - 嵌入Tensor的初始化方法。当指定字符串时,请参见 Initializer 类了解字符串的值。默认值: 'normal'

  • target (str) - 指定执行操作的'target'。该值必须在[ 'DEVICE' , 'CPU' ]中。默认值: 'CPU'

  • slice_mode (str) - semi_auto_parallel或auto_parallel模式下的切片方式。默认值: 'batch_slice'

    • batch_slice (str) - EmbeddingLookup算子会将输入的索引张量按批次(batch)进行划分,然后查找对应的嵌入向量。适用于每个样本都有相同数量索引的情况。

    • field_slice (str) - EmbeddingLookup算子会将输入的索引张量按特征(field)进行划分,然后查找对应的嵌入向量。适用于每个样本索引数量可能不同但是特征维度相同的情况。

    • table_row_slice (str) - EmbeddingLookup算子会将输入的索引张量看作一个二维表,并按行进行划分,然后查找对应的嵌入向量。

    • table_column_slice (str) - EmbeddingLookup算子会将输入的索引张量看作一个二维表,并按列进行划分,然后查找对应的嵌入向量。

  • feature_num_list (tuple) - 字段切片模式下的伴随数组(accompaniment array)。目前该参数的功能还未实现。默认值: None

  • max_norm (Union[float, None]) - 最大剪切值。数据类型必须为float16、float32。默认值: None

  • sparse (bool) - 使用稀疏模式。当'target'设置为'CPU'时,'sparse'必须为 true 。默认值: True

  • operator (str) - 字段特征的池化方法。支持 'SUM''MEAN''MAX' 。默认值: 'SUM'

  • dtype (mindspore.dtype) - Parameters的dtype。默认值: mstype.float32

输入:
  • input_indices (Tensor) - 指定输入Tensor元素的索引,其shape为 (batch_size,seq_length) 。数据类型为int32、int64。

  • input_values (Tensor) - 指定 input_indices 元素的权重。将检索出的向量乘以 input_values 。其shape为 (batch_size,seq_length) 。类型为float32。

  • field_ids (Tensor) - 指定 input_indices 元素的字段ID,其shape为 (batch_size,seq_length) 。类型为int32。

输出:

Tensor,shape为 (batch_size,field_size,embedding_size) 。类型为float32。

异常:
  • TypeError - vocab_sizeembedding_sizefield_size 不是int。

  • TypeError - sparse 不是bool或 feature_num_list 不是tuple。

  • ValueError - vocab_sizeembedding_sizefield_size 小于1。

  • ValueError - target 既不是 'CPU' 也不是 'DEVICE'

  • ValueError - slice_mode 不是 'batch_slice''field_slice''table_row_slice''table_column_slice'

  • ValueError - sparse 为False, target'CPU'

  • ValueError - slice_mode'field_slice'feature_num_list 为None。

  • ValueError - operator 不是 'SUM''MAX''MEAN'

支持平台:

Ascend GPU

样例:

>>> import mindspore
>>> from mindspore import Tensor, nn
>>> input_indices = Tensor([[2, 4, 6, 0, 0], [1, 3, 5, 0, 0]], mindspore.int32)
>>> input_values = Tensor([[1, 1, 1, 0, 0], [1, 1, 1, 0, 0]], mindspore.float32)
>>> field_ids = Tensor([[0, 1, 1, 0, 0], [0, 0, 1, 0, 0]], mindspore.int32)
>>> net = nn.MultiFieldEmbeddingLookup(10, 2, field_size=2, operator='SUM', target='DEVICE')
>>> out = net(input_indices, input_values, field_ids)
>>> print(out.shape)
(2, 2, 2)