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