UnitVectorLayer

UnitVectorLayer[n]

represents a net layer that transforms integers between 1 and n into n-dimensional unit vectors.

UnitVectorLayer[]

leaves the n to be inferred from context.

Details and Options

  • UnitVectorLayer operates either on integers or arrays of integers, producing a vector or array, respectively.
  • Specifying UnitVectorLayer[n] will produce a net that infers the n when a NetEncoder[] that produces integers is connected to its input.
  • UnitVectorLayer[][input] explicitly computes the output from applying the layer to input.
  • UnitVectorLayer[][{input1,input2,}] explicitly computes an output for each of the inputi.
  • When given a NumericArray as input, the output will be a NumericArray.
  • UnitVectorLayer is typically used inside NetChain, NetGraph, etc.
  • UnitVectorLayer exposes the following ports for use in NetGraph etc.:
  • "Input"an integer or array of integers
    "Output"an n-dimensional numerical vector or array of vectors
  • UnitVectorLayer[size,"Input"->shape] allows the shape of the input to be specified. Possible forms for shape are:
  • NetEncoder[]encoder producing an integer or array of integers
    "Integer"a single integer
    da vector of integers of length d
    {d1,d2,}an array of integers of dimensions d1×d2×
    "Varying"a vector of integers whose length is variable
    {"Varying",d2,d3,}an array of integers whose first dimension is variable and remaining dimensions are d2×d3×
  • Options[UnitVectorLayer] gives the list of default options to construct the layer. Options[UnitVectorLayer[]] gives the list of default options to evaluate the layer on some data.
  • Information[UnitVectorLayer[]] gives a report about the layer.
  • Information[UnitVectorLayer[],prop] gives the value of the property prop of UnitVectorLayer[]. Possible properties are the same as for NetGraph.

Examples

open allclose all

Basic Examples  (2)

Create a UnitVectorLayer that will accept an array containing 1 or 2 as input and produce an array of "one-hot" vectors:

Create a UnitVectorLayer that will accept 1, 2 or 3 as input and produce a "one-hot" vector:

Apply the layer to an integer to produce an output vector:

Scope  (3)

Create a UnitVectorLayer with the input specified to be an integer between 1 and 3:

Apply the layer to an input:

The layer threads across a batch of inputs:

Create a UnitVectorLayer with the input specified to be a sequence of integers between 1 and 3:

Apply the layer to a sequence:

Apply the layer to a batch of sequences of varying lengths:

Explicitly specify that the input is a matrix of integers between 1 and 3:

Apply the input to a matrix to obtain a three-dimensional array:

Applications  (1)

Use a NetEncoder in conjunction with a UnitVectorLayer:

Properties & Relations  (1)

UnitVectorLayer is related to the n-dimensional form of UnitVector:

Apply both to an integer:

Possible Issues  (1)

Out-of-bounds integers will trigger a failure:

Introduced in 2017
 (11.1)