Spec-Zone.ru › TensorFlow 2.3

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, каждое вложение усекается, если его евклидова норма больше этого значения, прежде чем комбинировать.
trainable Является ли вложение обучаемым. По умолчанию True.
use_safe_embedding_lookup Если True, используется `safe_embedding_lookup_sparse` вместо `embedding_lookup_sparse`. `safe_embedding_lookup_sparse` гарантирует отсутствие пустых строк и все веса и идентификаторы являются положительными за счет дополнительных вычислительных затрат. Это относится только к тензорам входных данных формы rank 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.

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

Spec-Zone.ru

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