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


Python tf.compat.v1.feature_column.shared_embedding_columns用法及代码示例


从稀疏分类输入转换的密集列的列表。

用法

tf.compat.v1.feature_column.shared_embedding_columns(
    categorical_columns, dimension, combiner='mean', initializer=None,
    shared_embedding_collection_name=None, ckpt_to_load_from=None,
    tensor_name_in_ckpt=None, max_norm=None, trainable=True,
    use_safe_embedding_lookup=True
)

参数

  • categorical_columns categorical_column_with_* 函数创建的分类列的列表。这些列生成作为嵌入查找输入的稀疏 ID。除 key 外,所有列必须属于同一类型并具有相同的参数。例如:它们可以是 categorical_column_with_vocabulary_file 和相同的 vocabulary_file。部分或所有列也可以是weighted_categorical_column。
  • dimension 指定嵌入维度的整数,必须 > 0。
  • combiner 一个字符串,指定在一行中有多个条目时如何减少。目前支持'mean'、'sqrtn'和'sum',默认为'mean'。 'sqrtn' 通常可以达到很好的准确性,特别是对于 bag-of-words 列。这些中的每一个都可以被认为是列上的示例级别规范化。有关详细信息,请参阅 tf.embedding_lookup_sparse
  • initializer 用于嵌入变量初始化的变量初始化函数。如果未指定,则默认为 truncated_normal_initializer ,平均值为 0.0 和标准差 1/sqrt(dimension)
  • shared_embedding_collection_name 添加共享嵌入权重的集合的可选名称。如果没有给出,将根据 categorical_columns 的名称选择一个合理的名称。在创建共享嵌入权重时,这也用于variable_scope
  • ckpt_to_load_from 表示要从中恢复列权重的检查点名称/模式的字符串。如果 tensor_name_in_ckpt 不是 None 则为必需。
  • tensor_name_in_ckpt ckpt_to_load_fromTensor 的名称,从中恢复列权重。如果 ckpt_to_load_from 不是 None 则需要。
  • max_norm 如果不是 None ,如果每个嵌入的 l2-norm 大于此值,则在组合之前将对其进行裁剪。
  • trainable 嵌入是否可训练。默认为真。
  • use_safe_embedding_lookup 如果为真,则使用 safe_embedding_lookup_sparse 而不是 embedding_lookup_sparse。 safe_embedding_lookup_sparse 确保没有空行,并且所有权重和 id 都是正数,但代价是额外的计算成本。这仅适用于 rank 2 (NxM) 形状的输入张量。默认为 true,如果不需要上述检查,请考虑关闭。请注意,尽管输出结果可能为 0 或省略,但具有空行不会触发任何错误。

返回

  • 从稀疏输入转换的密集列的列表。结果的顺序遵循 categorical_columns 的顺序。

抛出

  • ValueError 如果 dimension 不 > 0。
  • ValueError 如果给定的 categorical_columns 中的任何一个属于不同类型或具有与其他参数不同的参数。
  • ValueError 如果指定了 ckpt_to_load_fromtensor_name_in_ckpt 之一。
  • ValueError 如果 initializer 已指定且不可调用。
  • RuntimeError 如果启用了即刻执行。

这类似于 embedding_column ,除了它生成共享相同嵌入权重的嵌入列列表。

当您的输入稀疏且类型相同(例如,共享相同词汇表的观看视频 ID 和印象视频 ID),并且您希望将它们转换为密集表示(例如,馈送到 DNN)时,请使用此选项。

输入必须是由任何categorical_column_* 函数创建的分类列的列表。除了 key 之外,它们都必须属于同一类型并具有相同的参数。例如:它们可以是 categorical_column_with_vocabulary_file 和相同的 vocabulary_file。部分或所有列也可以是weighted_categorical_column。

以下是 DNNClassifier 模型的两个特征嵌入示例:

watched_video_id = categorical_column_with_vocabulary_file(
    'watched_video_id', video_vocabulary_file, video_vocabulary_size)
impression_video_id = categorical_column_with_vocabulary_file(
    'impression_video_id', video_vocabulary_file, video_vocabulary_size)
columns = shared_embedding_columns(
    [watched_video_id, impression_video_id], dimension=10)

estimator = tf.estimator.DNNClassifier(feature_columns=columns, ...)

label_column = ...
def input_fn():
  features = tf.io.parse_example(
      ..., features=make_parse_example_spec(columns + [label_column]))
  labels = features.pop(label_column.name)
  return features, labels

estimator.train(input_fn=input_fn, steps=100)

这是一个使用 shared_embedding_columns 和 model_fn 的示例:

def model_fn(features, ...):
  watched_video_id = categorical_column_with_vocabulary_file(
      'watched_video_id', video_vocabulary_file, video_vocabulary_size)
  impression_video_id = categorical_column_with_vocabulary_file(
      'impression_video_id', video_vocabulary_file, video_vocabulary_size)
  columns = shared_embedding_columns(
      [watched_video_id, impression_video_id], dimension=10)
  dense_tensor = input_layer(features, columns)
  # Form DNN layers, calculate loss, and return EstimatorSpec.
  ...

相关用法


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