Input
Click and drag to draw.
The 32×32 image you feed in. Dark pixels = 1, white = 0.
Output (after convolution)
What the CNN "sees."
Each pixel = the kernel multiplied + summed over its 3×3 input neighbourhood. Grayscale = magnitude (abs on).
The 3×3 weights slid over every position. Use Tab and the arrow keys to move between cells.
⚖️ Learner vs. target weights
Train to watch the learner weights move toward the target.
🛰️ Inspect & scan (hover math · sliding window · output size)
Hover any Output cell to see its 3×3 receptive field and the nine products (the sum stays hidden until you click). Or run the sliding window across the image. These tools work in single-conv mode.
🔍 Sliding-window inspector
Click any cell on the output canvas to see the 3×3 input window centered on it, the kernel, and the dot-product math that produced that pixel.
🎨 Multi-channel demo (RGB → 1 output)
🎯 Try these scenarios first
Pick a scenario, predict what should happen, then apply it and compare the result with your prediction.
Scenario 2: The Sobel x-direction filter detects vertical edges
Scenario 3: The Sobel y-direction filter detects horizontal edges
Scenario 4: Max pooling reduces resolution
Scenario 5: Stacked convolutions see a larger region
✨ Featured comparison
Switch kernels before training anything. The same image becomes edge, blur, or sharpened evidence depending on the filter.
Try two hand-built filters, then use the learned-kernel mode to ask what training is actually changing.
🧭 Visual explanation
No state captured yet. Run or adjust the applet first.
📚 Lesson tour (5 steps)
-
📝 Worksheet (4 questions)
Q1. Cross image, Identity kernel. The output image is:
Q2. Cross image, Sobel-X kernel. Which part of the cross lights up brightest?
Q3. Switch to "Conv → conv" mode (two stacked 3×3 kernels). The effective receptive field becomes:
Q4. Turn on 🎯 Learn the filter, set the target to Sobel-X, and click Train. Starting from a random kernel, what happens to the 9 numbers as the loss falls?
🧪 Student response packet
Choose a filter, inspect the sliding-window calculation, then explain what feature the kernel makes visible.
♿ Text and keyboard support
Text and keyboard support
Keyboard path
- Use Tab and Shift+Tab to move through controls.
- Use Enter or Space on buttons, and arrow keys on sliders or select controls.
- The visual region is focusable and described by the state summary below.
Text state summary
Reduced motion and non-visual support
Reduced-motion settings are honored where possible. The current state is also available as text, so the main result does not depend only on color, animation, or spatial position.
Accessibility note: this layer gives a text equivalent for the applet state. It does not replace a full human screen-reader audit.