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 с модельной функцией:
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. Это также используется в 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 | если включено выполнение с немедленной выдачей. |
© 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/compat/v1/feature_column/shared_embedding_columns