public override void Process(TransformContext context)
        {
            var concat = (ExclusiveConcatenation)context.MatchedLayers[0];
            var output = concat.Output;

            var exConcat = new QuantizedExclusiveConcatenation(concat.Inputs.Select(x => new ReadOnlyMemory <int>(x.Dimensions.ToArray())));

            for (int i = 0; i < exConcat.Inputs.Count; i++)
            {
                var input      = concat.Inputs[i].Connection.From;
                var quantize   = new Quantize(input.Dimensions);
                var requantize = new Requantize(quantize.Output.Dimensions);
                quantize.Input.SetConnection(input);
                requantize.Input.SetConnection(quantize.Output);
                exConcat.Inputs[i].SetConnection(requantize.Output);
            }

            var dequantize = new Dequantize(exConcat.Output.Dimensions);

            dequantize.Input.SetConnection(exConcat.Output);

            var oldOuts = output.Connections.Select(o => o.To).ToList();

            foreach (var oldOut in oldOuts)
            {
                oldOut.SetConnection(dequantize.Output);
            }
        }
        public void FixupQuantization(QuantizedExclusiveConcatenation layer, QuantizationContext context)
        {
            var outRange = context.Distributions[layer.Output];

            foreach (var input in layer.Inputs.Select(x => x.Connection.From))
            {
                context.Distributions[input] = outRange;
            }
        }
        public void AllocateInputMemory(QuantizedExclusiveConcatenation layer, OutputConnector input, InferenceContext context)
        {
            var  totalAlloc = context.GetOrAllocateMainMemory(layer.Output);
            uint offset     = 0;

            foreach (var node in layer.Inputs.Select(x => x.Connection.From))
            {
                if (context.MainMemoryMap.ContainsKey(node))
                {
                    return;
                }
                uint size = (uint)node.Dimensions.GetSize();
                context.MainMemoryMap.Add(node, new MemoryAllocation(totalAlloc.Node, offset, size));
                offset += size;
            }
        }