summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtraining/train_cnn.py8
-rw-r--r--workspaces/main/shaders/cnn/cnn_conv3x3.wgsl2
-rw-r--r--workspaces/main/shaders/cnn/cnn_conv5x5.wgsl2
-rw-r--r--workspaces/main/shaders/cnn/cnn_layer.wgsl4
4 files changed, 8 insertions, 8 deletions
diff --git a/training/train_cnn.py b/training/train_cnn.py
index e1fd27b..dc14192 100755
--- a/training/train_cnn.py
+++ b/training/train_cnn.py
@@ -335,8 +335,8 @@ def generate_layer_shader(output_path, num_layers, kernel_sizes):
f.write(f" }}\n")
else:
f.write(f" else if (params.layer_index == {layer_idx}) {{\n")
- f.write(f" let gray_out = {conv_fn}(txt, smplr, uv, uniforms.resolution, gray, weights_layer{layer_idx});\n")
- f.write(f" // gray_out in [0,1] (sigmoid activation)\n")
+ f.write(f" let sum = {conv_fn}(txt, smplr, uv, uniforms.resolution, gray, weights_layer{layer_idx});\n")
+ f.write(f" let gray_out = 1.0 / (1.0 + exp(-sum)); // Sigmoid activation\n")
f.write(f" result = vec4<f32>(gray_out, gray_out, gray_out, 1.0);\n")
f.write(f" return mix(original_raw, result, params.blend_amount); // [0,1]\n")
f.write(f" }}\n")
@@ -452,7 +452,7 @@ def generate_conv_final_function(kernel_size, output_path):
with open(output_path, 'a') as f:
f.write(f"\n// Final layer: 7→1 channel (vec4-optimized)\n")
f.write(f"// Assumes 'tex' is already normalized to [-1,1]\n")
- f.write(f"// Output uses sigmoid activation to match PyTorch training\n")
+ f.write(f"// Returns raw sum (activation applied at call site)\n")
f.write(f"fn cnn_conv{k}x{k}_7to1(\n")
f.write(f" tex: texture_2d<f32>,\n")
f.write(f" samp: sampler,\n")
@@ -479,7 +479,7 @@ def generate_conv_final_function(kernel_size, output_path):
f.write(f" }}\n")
f.write(f" }}\n\n")
- f.write(f" return 1.0 / (1.0 + exp(-sum));\n")
+ f.write(f" return sum;\n")
f.write(f"}}\n")
diff --git a/workspaces/main/shaders/cnn/cnn_conv3x3.wgsl b/workspaces/main/shaders/cnn/cnn_conv3x3.wgsl
index d680840..48bb392 100644
--- a/workspaces/main/shaders/cnn/cnn_conv3x3.wgsl
+++ b/workspaces/main/shaders/cnn/cnn_conv3x3.wgsl
@@ -108,5 +108,5 @@ fn cnn_conv3x3_7to1(
}
}
- return 1.0 / (1.0 + exp(-sum));
+ return sum;
}
diff --git a/workspaces/main/shaders/cnn/cnn_conv5x5.wgsl b/workspaces/main/shaders/cnn/cnn_conv5x5.wgsl
index e39f6ef..9328d75 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 1.0 / (1.0 + exp(-sum));
+ return sum;
}
// Source layer: 7→4 channels (vec4-optimized)
diff --git a/workspaces/main/shaders/cnn/cnn_layer.wgsl b/workspaces/main/shaders/cnn/cnn_layer.wgsl
index c5f45ec..73816c6 100644
--- a/workspaces/main/shaders/cnn/cnn_layer.wgsl
+++ b/workspaces/main/shaders/cnn/cnn_layer.wgsl
@@ -45,8 +45,8 @@ struct CNNLayerParams {
result = cnn_tanh(result); // Keep in [-1,1]
}
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] (sigmoid activation)
+ let sum = cnn_conv3x3_7to1(txt, smplr, uv, uniforms.resolution, gray, weights_layer2);
+ let gray_out = 1.0 / (1.0 + exp(-sum)); // Sigmoid activation
result = vec4<f32>(gray_out, gray_out, gray_out, 1.0);
return mix(original_raw, result, params.blend_amount); // [0,1]
}