返回用於執行分類特征交叉的列。
用法
tf.feature_column.crossed_column(
keys, hash_bucket_size, hash_key=None
)
參數
-
keys
標識要交叉的特征的可迭代對象。每個元素可以是:- string:將使用相應的特征,必須是字符串類型。
CategoricalColumn
:將使用此列生成的轉換張量。不支持散列分類列。
-
hash_bucket_size
一個 int > 1。桶的數量。 -
hash_key
指定FingerprintCat64
函數將使用的 hash_key 來組合 SparseCrossOp 上的交叉指紋(可選)。
返回
-
一個
CrossedColumn
。
拋出
-
ValueError
如果len(keys) < 2
。 -
ValueError
如果任何鍵既不是字符串也不是CategoricalColumn
。 -
ValueError
如果任何鍵是HashedCategoricalColumn
。 -
ValueError
如果hash_bucket_size < 1
。
交叉的特征將根據 hash_bucket_size
進行散列。從概念上講,轉換可以被認為是: Hash(cartesian product of features) % 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, ...])
相關用法
- Python tf.feature_column.categorical_column_with_vocabulary_list用法及代碼示例
- Python tf.feature_column.categorical_column_with_hash_bucket用法及代碼示例
- Python tf.feature_column.categorical_column_with_identity用法及代碼示例
- Python tf.feature_column.categorical_column_with_vocabulary_file用法及代碼示例
- Python tf.feature_column.sequence_categorical_column_with_identity用法及代碼示例
- Python tf.feature_column.bucketized_column用法及代碼示例
- Python tf.feature_column.sequence_numeric_column用法及代碼示例
- Python tf.feature_column.sequence_categorical_column_with_vocabulary_file用法及代碼示例
- Python tf.feature_column.sequence_categorical_column_with_vocabulary_list用法及代碼示例
- Python tf.feature_column.sequence_categorical_column_with_hash_bucket用法及代碼示例
- Python tf.feature_column.shared_embeddings用法及代碼示例
- Python tf.feature_column.indicator_column用法及代碼示例
- Python tf.feature_column.weighted_categorical_column用法及代碼示例
- Python tf.feature_column.numeric_column用法及代碼示例
- Python tf.feature_column.embedding_column用法及代碼示例
- Python tf.feature_column.make_parse_example_spec用法及代碼示例
- Python tf.function用法及代碼示例
- Python tf.fingerprint用法及代碼示例
- Python tf.foldl用法及代碼示例
- Python tf.foldr用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.feature_column.crossed_column。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。