Spec-Zone.ru › TensorFlow 2.9

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
)

Это аналогично 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' часто обеспечивает хорошую точность, особенно со столбцами 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 Имя 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/compat/v1/feature_column/shared_embedding_columns

Spec-Zone.ru

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