Пример #1
0
        public static Tensor BatchNorm(Tensor input, Tensor scale, Tensor offset)
        {
            var output = new Tensor(input.Shape);

            GpuBackend.InvokeBatchNorm(input, scale, offset, output);
            return(output);
        }
        public override void Render(PostProcessRenderContext context)
        {
            var cmd = context.command;

            cmd.BeginSample("Pix2Pix");

            var sheet = context.propertySheets.Get(_shader);
            var props = sheet.properties;

            props.SetVector(ShaderIDs.EdgeParams, new Vector3(
                                settings.edgeThreshold,
                                settings.edgeIntensity,
                                settings.edgeOpacity
                                ));

            // Edge detection pass
            cmd.BlitFullscreenTriangle(context.source, _sourceRT, sheet, 0);

            // Pix2Pix generator pass
            GpuBackend.UseCommandBuffer(cmd);
            _generator.Start(_sourceRT);
            _generator.Step();
            while (_generator.Running)
            {
                _generator.Step();
            }
            _generator.GetResult(_resultRT);
            GpuBackend.ResetToDefaultCommandBuffer();

            // Composite pass
            props.SetTexture(ShaderIDs.EdgeTex, _sourceRT);
            cmd.BlitFullscreenTriangle(_resultRT, context.destination, sheet, 1);

            cmd.EndSample("Pix2Pix");
        }
Пример #3
0
        // Batch normalization

        public static void BatchNorm(Tensor input, Tensor scale, Tensor offset, Tensor output)
        {
            output.Reset(input.Shape);
            GpuBackend.InvokeBatchNorm(input, scale, offset, output);
        }
Пример #4
0
        // ReLU activation function

        public static void Relu(Tensor input, Tensor output)
        {
            output.Reset(input.Shape);
            GpuBackend.InvokeActivation("Relu", input, 0, output);
        }
Пример #5
0
        // Tensor blending function

        public static void Blend(Tensor input1, Tensor input2, float param, Tensor output)
        {
            output.Reset(input1.Shape);
            GpuBackend.InvokeBlend(input1, input2, param, output);
        }
Пример #6
0
 public static void Concat(Tensor input1, Tensor input2, Tensor output)
 {
     output.Reset(ConcatShape(input1, input2));
     GpuBackend.InvokeConcat(input1, input2, output);
 }
Пример #7
0
        // Leaky ReLU activation function

        public static void LeakyRelu(Tensor input, float alpha, Tensor output)
        {
            output.Reset(input.Shape);
            GpuBackend.InvokeActivation("LeakyRelu", input, alpha, output);
        }
Пример #8
0
 public static void Deconv2D(Tensor input, Tensor filter, Tensor bias, Tensor output)
 {
     output.Reset(Deconv2DShape(input, filter));
     GpuBackend.InvokeDeconv2D(input, filter, bias, output);
 }
Пример #9
0
        // ReLU activation function

        public static void Relu(Tensor input, Tensor output)
        {
            GpuBackend.InvokeActivation("Relu", input, 0, output);
        }
Пример #10
0
        // 2D convolution

        public static void Conv2D(Tensor input, Tensor filter, Tensor bias, Tensor output)
        {
            GpuBackend.InvokeConv2D(input, filter, bias, output);
        }
Пример #11
0
        // Tensor concatenation function

        public static void Concat(Tensor input1, Tensor input2, Tensor output)
        {
            GpuBackend.InvokeConcat(input1, input2, output);
        }
Пример #12
0
        // Tanh activation function

        public static void Tanh(Tensor input, Tensor output)
        {
            GpuBackend.InvokeActivation("Tanh", input, 0, output);
        }