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