Spec-Zone.ru › TensorFlow 2.9

tf.feature_column.shared_embeddings

Список плотных столбцов, преобразующих разреженный категориальный ввод.

tf.feature_column.shared_embeddings(
    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
)

Это аналогично embedding_column, за исключением того, что оно создаёт список столбцов вложений, которые используют одни и те же весовые коэффициенты вложений.

Используйте это, когда ваши входные данные являются разреженными и одного типа (например, идентификаторы видео «просмотренные» и «показы», которые используют один и тот же словарь), и вы хотите преобразовать их в плотное представление (например, для подачи в 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.
  ...
Аргументы
categorical_columns Список категориальных столбцов, созданных функцией categorical_column_with_*. Эти столбцы генерируют разреженные идентификаторы, которые являются входными данными для поиска вложений. Все столбцы должны быть одного типа и иметь одинаковые аргументы, за исключением key. Например, они могут быть `categorical_column_with_vocabulary_file` с одинаковым `vocabulary_file`. Некоторые или все столбцы также могут быть `weighted_categorical_column`.
dimension Целое число, определяющее размер вложения, должно быть > 0.
combiner Строка, определяющая способ уменьшения, если в одной строке несколько записей. В настоящее время поддерживаются 'mean', 'sqrtn' и 'sum', по умолчанию используется 'mean'. 'sqrtn' часто обеспечивает хорошую точность, особенно со столбцами «мешок слов». Каждый из них можно рассматривать как нормализацию на уровне примера для столбца. Для получения дополнительной информации см. tf.embedding_lookup_sparse.
initializer Функция инициализации переменной, используемая при инициализации переменной вложения. Если не указана, по умолчанию используется truncated_normal_initializer со средним значением 0.0 и стандартным отклонением 1/sqrt(dimension).
shared_embedding_collection_name Необязательное общее имя этих столбцов. Если не указано, будет выбрано разумное имя на основе имён categorical_columns.
ckpt_to_load_from Строка, представляющая имя/шаблон контрольной точки, из которой восстанавливаются весовые коэффициенты столбцов. Требуется, если tensor_name_in_ckpt не равно None.
tensor_name_in_ckpt Имя Tensor в ckpt_to_load_from из которого восстанавливаются весовые коэффициенты столбцов. Требуется, если ckpt_to_load_from не равно None.
max_norm Если не None, каждое вложение ограничивается, если его l2-норма больше этого значения, прежде чем объединить.
trainable Является ли вложение обучаемым. По умолчанию True.
use_safe_embedding_lookup Если true, используется safe_embedding_lookup_sparse вместо embedding_lookup_sparse. safe_embedding_lookup_sparse гарантирует, что нет пустых строк и все весовые коэффициенты и идентификаторы являются положительными, но за счёт дополнительных затрат вычислительных ресурсов. Это применимо только к тензорам входных данных формы ранга 2 (NxM). По умолчанию true, рассмотрите возможность выключения, если вышеперечисленные проверки не нужны. Обратите внимание, что наличие пустых строк не вызовет никакой ошибки, хотя результат вывода может быть 0 или опущен.
Возвращаемое значение
Список плотных столбцов, преобразующих разреженный ввод. Порядок результатов соответствует порядку categorical_columns.
Исключения
ValueError если dimension не > 0.
ValueError если любой из переданных categorical_columns отличается по типу или имеет другие аргументы, чем другие.
ValueError если ровно один из ckpt_to_load_from и tensor_name_in_ckpt указан.
ValueError если initializer указан и не является вызываемым.
RuntimeError если включено выполнение Eager.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/feature_column/shared_embeddings

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API