diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-13 12:41:35 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-13 12:41:35 +0100 |
| commit | a101d76e3eab4ee4d93357d71e2c7d4e0114f56f (patch) | |
| tree | 54fa8bcb50bfcfa401fb58fcb2c6ad69c54a6788 /doc | |
| parent | 561d1dc446db7d1d3e02b92b43abedf1a5017850 (diff) | |
CNN v2: Restore per-layer kernel sizes support
Training:
- train_cnn_v2.py: Accept --kernel-sizes as comma-separated list
- CNNv2 model: Per-layer kernel sizes (e.g., [1,3,5])
- Single value replicates across layers (e.g., "3" → [3,3,3])
Export:
- export_cnn_v2_weights.py: Backward compatible with old checkpoints
- Handles both kernel_size (old) and kernel_sizes (new) format
Documentation:
- CNN_V2.md: Updated code examples and config format
- HOWTO.md: Updated training examples to show comma-separated syntax
Binary format: Already supports per-layer kernel sizes (no changes)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/CNN_V2.md | 11 | ||||
| -rw-r--r-- | doc/HOWTO.md | 4 |
2 files changed, 9 insertions, 6 deletions
diff --git a/doc/CNN_V2.md b/doc/CNN_V2.md index 4612d7a..6242747 100644 --- a/doc/CNN_V2.md +++ b/doc/CNN_V2.md @@ -214,12 +214,15 @@ def compute_static_features(rgb, depth): ```python class CNNv2(nn.Module): - def __init__(self, kernel_size=3, num_layers=3): + def __init__(self, kernel_sizes, num_layers=3): super().__init__() + if isinstance(kernel_sizes, int): + kernel_sizes = [kernel_sizes] * num_layers + self.kernel_sizes = kernel_sizes self.layers = nn.ModuleList() # All layers: 12D input (4 prev + 8 static) → 4D output - for i in range(num_layers): + for kernel_size in kernel_sizes: self.layers.append( nn.Conv2d(12, 4, kernel_size=kernel_size, padding=kernel_size//2, bias=False) @@ -247,7 +250,7 @@ class CNNv2(nn.Module): ```python # Hyperparameters -kernel_size = 3 # Uniform 3×3 kernels +kernel_sizes = [3, 3, 3] # Per-layer kernel sizes (e.g., [1,3,5]) num_layers = 3 # Number of CNN layers learning_rate = 1e-3 batch_size = 16 @@ -278,7 +281,7 @@ for epoch in range(epochs): torch.save({ 'state_dict': model.state_dict(), # f32 weights 'config': { - 'kernel_size': 3, + 'kernel_sizes': [3, 3, 3], # Per-layer kernel sizes 'num_layers': 3, 'features': ['p0', 'p1', 'p2', 'p3', 'uv.x', 'uv.y', 'sin10_x', 'bias'] }, diff --git a/doc/HOWTO.md b/doc/HOWTO.md index e909a5d..9c67106 100644 --- a/doc/HOWTO.md +++ b/doc/HOWTO.md @@ -161,10 +161,10 @@ Config: 100 epochs, 3×3 kernels, 8→4→4 channels, patch-based (harris detect --input training/input/ --target training/target_2/ \ --epochs 100 --batch-size 16 --checkpoint-every 5 -# Custom architecture +# Custom architecture (per-layer kernel sizes) ./training/train_cnn_v2.py \ --input training/input/ --target training/target_2/ \ - --kernel-sizes 1 3 5 --channels 16 8 4 \ + --kernel-sizes 1,3,5 \ --epochs 5000 --batch-size 16 ``` |
