CNN shape calculator for PyTorch (2D & 3D)
11/1/2020
This is a small, practical tool to avoid off-by-one mistakes when designing CNNs. You set the input tensor once, add layers, tweak hyperparameters, and see the shapes and parameter counts update live.
Why this is useful
- Quick shape checks while sketching an architecture
- Early catch for invalid settings (e.g., output becomes ≤ 0)
- Fast parameter estimates per layer
What it supports
- 2D:
nn.Conv2d,nn.ConvTranspose2d,*Pool2d - 3D:
nn.Conv3d,nn.ConvTranspose3d,*Pool3d - Output padding for transpose convs
- Per-layer input/output summary and learnable parameter counts
- Add/remove layers, instant re-compute
Notes:
- Dilation is assumed to be 1.
- Parameter counts shown exclude bias. If you use
bias=True, addout_channels.
Formulas
For a single spatial dimension:
-
Conv / Pool
out = floor((in + 2*pad − (kernel − 1) − 1) / stride + 1) -
ConvTranspose
out = (in − 1) * stride − 2*pad + (kernel − 1) + output_padding + 1
These apply independently to each dimension (H and W for 2D; D, H, W for 3D).
CNN Dimensions Calculator
Live shape propagation for nn.Conv2d, nn.ConvTranspose2d, *Pool2d and nn.Conv3d, nn.ConvTranspose3d, *Pool3d.
(N, C, H, W)N=C=H×W=×
↓
Conv2d
nn.Conv2d (in_channels=,out_channels=,kernel_size=×,stride=×,padding=×)
IN: [1, 28, 28]
CONV: CIN=1, COUT=10, F=(3, 3), S=(1, 1), P=(0, 0), 90 params
OUT: [10, 26, 26]
↓
(N, C, H, W)N=C=H×W=×