当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.compat.v1.nn.safe_embedding_lookup_sparse用法及代码示例


查找嵌入结果,考虑无效 ID 和空特征。

用法

tf.compat.v1.nn.safe_embedding_lookup_sparse(
    embedding_weights, sparse_ids, sparse_weights=None, combiner='mean',
    default_id=None, name=None, partition_strategy='div', max_norm=None
)

参数

  • embedding_weights 表示完整嵌入张量的单个张量,或除了第一个维度之外所有相同形状的列表张量,表示分片嵌入张量。或者,通过沿维度 0 分区创建的 PartitionedVariable 。每个元素的大小必须针对给定的 partition_strategy 进行适当调整。
  • sparse_ids SparseTensor 形状 [d_0, d_1, ..., d_n] 包含 id。 d_0 通常是批量大小。
  • sparse_weights SparseTensorsparse_ids 形状相同,包含与 sparse_idsNone 对应的浮点权重,如果所有权重都假定为 1.0。
  • combiner 一个字符串,指定如何组合每个条目的嵌入结果。目前支持"mean"、"sqrtn"和"sum",默认为"mean"。
  • default_id 用于没有特征的条目的 id。
  • name 此操作的名称(可选)。
  • partition_strategy 指定分区策略的字符串。目前支持"div""mod"。默认为 "div"
  • max_norm 如果不是 None ,则所有嵌入在组合之前都经过 l2 归一化为 max_norm。

返回

  • 表示稀疏 id 的组合嵌入的密集张量。对于由表示的密集张量中的每一行sp_ids,op 查找该行中所有 id 的嵌入,将它们乘以相应的权重,并按指定组合这些嵌入。

    换句话说,如果

    shape(combined embedding_weights) = [p0, p1, ..., pm]

    shape(sparse_ids) = shape(sparse_weights) = [d0, d1, ..., dn]

    然后

    shape(output) = [d0, d1, ... dn-1, p1, ..., pm]

    例如,如果 params 是一个 10x20 矩阵,那么 sp_ids /sp_weights 是

    [0, 0]:id 1, weight 2.0
      [0, 1]:id 3, weight 0.5
      [1, 0]:id -1, weight 1.0
      [2, 3]:id 1, weight 3.0

    default_id 为 0。

    使用combiner ="mean",则输出将是一个 3x20 矩阵,其中

    output[0,:] = (params[1,:] * 2.0 + params[3,:] * 0.5) / (2.0 + 0.5)
      output[1,:] = (params[0,:] * 1.0) / 1.0
      output[2,:] = (params[1,:] * 3.0) / 3.0

抛出

  • ValueError 如果embedding_weights 为空。

embedding_weights 中的分区嵌入必须是相同的形状,除了第一个维度。第一个维度允许变化,因为词汇量不一定是 P 的倍数。 embedding_weights 可能是通过将tf.compat.v1.get_variable() 与分区器一起使用而返回的PartitionedVariable

从输入 ID 和权重以及任何具有非正权重的 ID 中删除无效 ID (default_id 的嵌入向量,如果未提供 default_id,则返回 0 向量。

id 和权重可以是多维的。嵌入总是沿最后一个维度聚合。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.nn.safe_embedding_lookup_sparse。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。