返回用于执行分类特征交叉的列。
用法
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。