tf.feature_column.crossed_column
Возвращает столбец для выполнения перекрёстных операций категориальных признаков. (устарело)
tf.feature_column.crossed_column(
keys, hash_bucket_size, hash_key=None
)
Используется в ноутбуках
| Используется в учебниках |
|---|
Перекрёстные признаки будут хэшироваться в соответствии с hash_bucket_size. По сути, преобразование можно представить как: Hash(декартово произведение признаков) % hash_bucket_size
Например, если входные признаки:
-
SparseTensor, на который ссылается первый ключ:
shape = [2, 2] { [0, 0]: "a" [1, 0]: "b" [1, 1]: "c" } -
SparseTensor, на который ссылается второй ключ:
shape = [2, 1] { [0, 0]: "d" [1, 0]: "e" }
то перекрёстный признак будет выглядеть так:
shape = [2, 2]
{
[0, 0]: Hash64("d", Hash64("a")) % hash_bucket_size
[1, 0]: Hash64("e", Hash64("b")) % hash_bucket_size
[1, 1]: Hash64("e", Hash64("c")) % hash_bucket_size
}
Вот пример создания линейной модели с перекрестными операциями строковых признаков:
keywords_x_doc_terms = crossed_column(['keywords', 'doc_terms'], 50K) columns = [keywords_x_doc_terms, ...] features = tf.io.parse_example(..., features=make_parse_example_spec(columns)) linear_prediction = linear_model(features, columns)
Вы также можете использовать поиск словаря перед перекрёстной операцией:
keywords = categorical_column_with_vocabulary_file(
'keywords', '/path/to/vocabulary/file', vocabulary_size=1K)
keywords_x_doc_terms = crossed_column([keywords, 'doc_terms'], 50K)
columns = [keywords_x_doc_terms, ...]
features = tf.io.parse_example(..., features=make_parse_example_spec(columns))
linear_prediction = linear_model(features, columns)
Если входной признак имеет числовой тип, вы можете использовать categorical_column_with_identity или bucketized_column, как в примере:
# vertical_id is an integer categorical feature.
vertical_id = categorical_column_with_identity('vertical_id', 10K)
price = numeric_column('price')
# bucketized_column converts numerical feature to a categorical one.
bucketized_price = bucketized_column(price, boundaries=[...])
vertical_id_x_price = crossed_column([vertical_id, bucketized_price], 50K)
columns = [vertical_id_x_price, ...]
features = tf.io.parse_example(..., features=make_parse_example_spec(columns))
linear_prediction = linear_model(features, columns)
Чтобы использовать перекрёстный столбец в модели DNN, необходимо добавить его в столбец встраивания, как в этом примере:
vertical_id_x_price = crossed_column([vertical_id, bucketized_price], 50K) vertical_id_x_price_embedded = embedding_column(vertical_id_x_price, 10) dense_tensor = input_layer(features, [vertical_id_x_price_embedded, ...])
| Аргументы | |
|---|---|
keys | Итерируемый объект, определяющий признаки для перекрёстной операции. Каждый элемент может быть либо:
|
hash_bucket_size | Целое число > 1. Количество ведер. |
hash_key | Указывает ключ хэширования, который будет использоваться функцией FingerprintCat64 для объединения отпечатков перекрестий в SparseCrossOp (необязательно). |
| Возвращаемое значение | |
|---|---|
CrossedColumn. |
| Исключения | |
|---|---|
ValueError | Если len(keys) < 2. |
ValueError | Если любой из ключей не является ни строкой, ни CategoricalColumn. |
ValueError | Если любой из ключей является HashedCategoricalColumn. |
ValueError | Если hash_bucket_size < 1. |
© 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/api_docs/python/tf/feature_column/crossed_column