From d56de04a4b1f19b9fa73e6f7f9c7a5a0eadd6dd3 Mon Sep 17 00:00:00 2001 From: skal Date: Wed, 11 Feb 2026 10:07:58 +0100 Subject: fix: Replace clamp with sigmoid in CNN final layer Final layer used hard clamp causing saturation to white when output > 1.0. Replaced with sigmoid activation for smooth [0,1] mapping with gradients. Changes: - train_cnn.py: torch.sigmoid() in forward pass and WGSL codegen - WGSL shaders: 1.0/(1.0+exp(-sum)) in cnn_conv3x3/5x5 _7to1 functions Co-Authored-By: Claude Sonnet 4.5 --- workspaces/main/shaders/cnn/cnn_layer.wgsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'workspaces/main/shaders/cnn/cnn_layer.wgsl') diff --git a/workspaces/main/shaders/cnn/cnn_layer.wgsl b/workspaces/main/shaders/cnn/cnn_layer.wgsl index c5abddb..c5f45ec 100644 --- a/workspaces/main/shaders/cnn/cnn_layer.wgsl +++ b/workspaces/main/shaders/cnn/cnn_layer.wgsl @@ -46,7 +46,7 @@ struct CNNLayerParams { } else if (params.layer_index == 2) { let gray_out = cnn_conv3x3_7to1(txt, smplr, uv, uniforms.resolution, gray, weights_layer2); - // gray_out in [0,1] (clamped to match PyTorch training) + // gray_out in [0,1] (sigmoid activation) result = vec4(gray_out, gray_out, gray_out, 1.0); return mix(original_raw, result, params.blend_amount); // [0,1] } -- cgit v1.2.3