View source on GitHub |
Category crossing layer.
Inherits From: PreprocessingLayer
, Layer
, Module
tf.keras.layers.experimental.preprocessing.CategoryCrossing(
depth=None, name=None, separator=None, **kwargs
)
This layer concatenates multiple categorical inputs into a single categorical output (similar to Cartesian product). The output dtype is string.
Usage:
inp_1 = ['a', 'b', 'c']
inp_2 = ['d', 'e', 'f']
layer = tf.keras.layers.experimental.preprocessing.CategoryCrossing()
layer([inp_1, inp_2])
<tf.Tensor: shape=(3, 1), dtype=string, numpy=
array([[b'a_X_d'],
[b'b_X_e'],
[b'c_X_f']], dtype=object)>
inp_1 = ['a', 'b', 'c']
inp_2 = ['d', 'e', 'f']
layer = tf.keras.layers.experimental.preprocessing.CategoryCrossing(
separator='-')
layer([inp_1, inp_2])
<tf.Tensor: shape=(3, 1), dtype=string, numpy=
array([[b'a-d'],
[b'b-e'],
[b'c-f']], dtype=object)>
Arguments | |
---|---|
depth
|
depth of input crossing. By default None, all inputs are crossed into
one output. It can also be an int or tuple/list of ints. Passing an
integer will create combinations of crossed outputs with depth up to that
integer, i.e., [1, 2, ..., depth ), and passing a tuple of integers will
create crossed outputs with depth for the specified values in the tuple,
i.e., depth =(N1, N2) will create all possible crossed outputs with depth
equal to N1 or N2. Passing None means a single crossed output with all
inputs. For example, with inputs a , b and c , depth=2 means the
output will be [a;b;c;cross(a, b);cross(bc);cross(ca)].
|
separator
|
A string added between each input being joined. Defaults to 'X'. |
name
|
Name to give to the layer. |
**kwargs
|
Keyword arguments to construct a layer. |
Input shape: a list of string or int tensors or sparse tensors of shape
[batch_size, d1, ..., dm]
Output shape: a single string or int tensor or sparse tensor of shape
[batch_size, d1, ..., dm]
Returns | |
---|---|
If any input is RaggedTensor , the output is RaggedTensor .
Else, if any input is SparseTensor , the output is SparseTensor .
Otherwise, the output is Tensor .
|
Example: (depth
=None)
If the layer receives three inputs:
a=[[1], [4]]
, b=[[2], [5]]
, c=[[3], [6]]
the output will be a string tensor:
[[b'1_X_2_X_3'], [b'4_X_5_X_6']]
Example: (depth
is an integer)
With the same input above, and if depth
=2,
the output will be a list of 6 string tensors:
[[b'1'], [b'4']]
[[b'2'], [b'5']]
[[b'3'], [b'6']]
[[b'1_X_2'], [b'4_X_5']]
,
[[b'2_X_3'], [b'5_X_6']]
,
[[b'3_X_1'], [b'6_X_4']]
Example: (depth
is a tuple/list of integers)
With the same input above, and if depth
=(2, 3)
the output will be a list of 4 string tensors:
[[b'1_X_2'], [b'4_X_5']]
,
[[b'2_X_3'], [b'5_X_6']]
,
[[b'3_X_1'], [b'6_X_4']]
,
[[b'1_X_2_X_3'], [b'4_X_5_X_6']]
Methods
adapt
adapt(
data, reset_state=True
)
Fits the state of the preprocessing layer to the data being passed.
Arguments | |
---|---|
data
|
The data to train on. It can be passed either as a tf.data Dataset, or as a numpy array. |
reset_state
|
Optional argument specifying whether to clear the state of
the layer at the start of the call to adapt , or whether to start
from the existing state. This argument may not be relevant to all
preprocessing layers: a subclass of PreprocessingLayer may choose to
throw if 'reset_state' is set to False.
|
partial_crossing
partial_crossing(
partial_inputs, ragged_out, sparse_out
)
Gets the crossed output from a partial list/tuple of inputs.