當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。