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_conv5x5.wgsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'workspaces/main/shaders/cnn/cnn_conv5x5.wgsl') diff --git a/workspaces/main/shaders/cnn/cnn_conv5x5.wgsl b/workspaces/main/shaders/cnn/cnn_conv5x5.wgsl index ba2a4b7..e39f6ef 100644 --- a/workspaces/main/shaders/cnn/cnn_conv5x5.wgsl +++ b/workspaces/main/shaders/cnn/cnn_conv5x5.wgsl @@ -62,7 +62,7 @@ fn cnn_conv5x5_7to1( } } - return clamp(sum, 0.0, 1.0); + return 1.0 / (1.0 + exp(-sum)); } // Source layer: 7→4 channels (vec4-optimized) -- cgit v1.2.3