Per Channel Normalisation Formats

If you want finer-grain control over your normalisation, or you want to be able to take advantage of negotiation, you'll want to use a per-channel normalisation format.

These give instructions on how to normalise each of your individual channels.

A per-channel format includes information for each input channel. They are separated by a colon (:) character and in output order.

Each individual channel has the following format….

Input ID>Format

…where the Input ID is the name or index of the input, and Format is one of the following…

FormatMeaning
AAll inputs are automatically scaled between 0-1, except for those that cross between negative and positive numbers, which are scaled -1 to 1. Values that are always negative are inverted, so the largest negative number is 1 and the smallest 0.
-1-1All inputs are scaled to fit into a scale between -1 and +1
0-1All inputs are scaled to fit in a range between 0-1
*Inputs are not scaled and left as raw numbers
DInputs are discrete values rather than continuous. After the D is additional formatting information, shown below

Ranges

You can optionally include the ranges with your formatting instructions. These follow an '=' sign, and the minimum and maximum values are separated by a vertical bar (|) character.

For example, if you wanted to auto-scale a value between 0 and 200, you could use the following format - A=0|200.

If you want to use your format for negotiation, ranges are a helpful addition.

Discrete Formats

If you've used normalisation D (discrete), you must add range information.

Instead of simply an upper and lower bound, you should enter all the relevant values of the discrete channel, separated by vertical bars (|).

Because discrete values aren't continuous, mapping them to a single analogue input is often going to cause issues.

When mapping a discrete value into an AI, it is instead split into multiple outputs, and you'll need to define the outputs you're expecting.

For example, you might have a traffic light that can be in three states - red (0), green (1) and yellow (2). The input in this case is a single channel - [2] when the light is yellow.

If you used the format 'A' on this value, you'd end up getting an output of [1] for yellow, [0.5] for green and [0] for red. Because you have the 'good' value sandwiched between two 'bad' values, AIs might struggle to learn the patterns.

If instead of 'A', you used 'D=0|2|1', the input would be broken up into three distinct outputs - one for 'red', one for 'green' and one for 'blue'. So an input of [2] would result in an output of [0,1,0].