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"); }
// Batch normalization public static void BatchNorm(Tensor input, Tensor scale, Tensor offset, Tensor output) { output.Reset(input.Shape); GpuBackend.InvokeBatchNorm(input, scale, offset, output); }
// ReLU activation function public static void Relu(Tensor input, Tensor output) { output.Reset(input.Shape); GpuBackend.InvokeActivation("Relu", input, 0, output); }
// 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); }
public static void Concat(Tensor input1, Tensor input2, Tensor output) { output.Reset(ConcatShape(input1, input2)); GpuBackend.InvokeConcat(input1, input2, output); }
// Leaky ReLU activation function public static void LeakyRelu(Tensor input, float alpha, Tensor output) { output.Reset(input.Shape); GpuBackend.InvokeActivation("LeakyRelu", input, alpha, output); }
public static void Deconv2D(Tensor input, Tensor filter, Tensor bias, Tensor output) { output.Reset(Deconv2DShape(input, filter)); GpuBackend.InvokeDeconv2D(input, filter, bias, output); }
// ReLU activation function public static void Relu(Tensor input, Tensor output) { GpuBackend.InvokeActivation("Relu", input, 0, output); }
// 2D convolution public static void Conv2D(Tensor input, Tensor filter, Tensor bias, Tensor output) { GpuBackend.InvokeConv2D(input, filter, bias, output); }
// Tensor concatenation function public static void Concat(Tensor input1, Tensor input2, Tensor output) { GpuBackend.InvokeConcat(input1, input2, output); }
// Tanh activation function public static void Tanh(Tensor input, Tensor output) { GpuBackend.InvokeActivation("Tanh", input, 0, output); }