Skip to content

support CategoryCrossing preprocessing layer #1909

Open
@QiJune

Description

@QiJune
CategoryCrossing(PreprocessingLayer):
"""This layer transforms multiple categorical inputs to categorical outputs
   by Cartesian product, and hash the output if necessary.
   If any of the inputs is sparse, then all outputs will be sparse. Otherwise, all outputs will be dense."""

  def __init__(self, depth=None, num_bins=None, name=None, **kwargs):
    """Constructs a CategoryCrossing layer.
    Args:
      depth: depth of input crossing. By default None, all inputs are crossed
             into one output. It can be an int or tuple/list of ints, where inputs are
             combined into all combinations of output with degree of `depth`. For example,
             with inputs `a`, `b` and `c`, `depth=2` means the output will be [ab;ac;bc]
      num_bins: Number of hash bins. By default None, no hashing is performed.
      name: Name to give to the layer.
      **kwargs: Keyword arguments to construct a layer.

    Input: a list of int tensors of shape `[batch_size, d1, ..., dm]`
    Output: a single int tensor of shape `[batch_size, d1, ..., dm]`

    Example:
      If the layer receives two inputs, `a=[[1, 2]]` and `b=[[1, 3]]`, and
      if depth is 2, then the output will be a string tensor `[[b'1_X_1',
      b'1_X_3', b'2_X_1', b'2_X_3']]` if not hashed, or integer tensor
      `[[hash(b'1_X_1'), hash(b'1_X_3'), hash(b'2_X_1'), hash(b'2_X_3')]]` if hashed.
    """
    pass

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions