LazyConv3d
Conv3dLazyConv3d(out_channels: int, kernel_size: _Size3d, stride: _Size3d = 1, padding: _Size3d | str = 0, dilation: _Size3d = 1, groups: int = 1, bias: bool = True, padding_mode: str = 'zeros', device: DeviceLike = None, dtype: DTypeLike = None)A Conv3d that infers in_channels from the first input.
Lazy initialization for 3D convolution: in_channels need not be
specified at construction time. Weight allocation and Kaiming
uniform initialization are deferred until the first forward
call (or state_dict load), at which point C_in is read from
x.shape[1].
Parameters
out_channelsintkernel_sizeint or tuple[int, int, int]strideint or tuple[int, int, int]= 11.paddingint, tuple[int, int, int], or str= 0"same" / "valid" string specifier.
Default: 0.dilationint or tuple[int, int, int]= 11.groupsint= 11.biasbool= TrueTrue, a learnable bias is added after materialization.
Default: True.padding_modestr= 'zeros'"zeros", "reflect", "replicate", or "circular".
Default: "zeros".deviceDeviceLike= NoneNone.dtypeDTypeLike= NoneNone.Attributes
weightParameter or NoneNone before materialization; shape
(out_channels, in_channels // groups, K_D, K_H, K_W) afterwards.biasParameter or NoneNone before materialization; (out_channels,) if
bias=True, else None.in_channelsint or NoneNone before the first forward pass.Notes
Input:
— is
inferred automatically.
Output:
—
same formula as Conv3d.
State-dict materialization. A 5-D weight tensor in the
state_dict triggers materialization before parameter copying.
Examples
Lazy 3D conv in a volumetric network:
>>> import lucid
>>> import lucid.nn as nn
>>> lazy3d = nn.LazyConv3d(out_channels=32, kernel_size=3, padding=1)
>>> x = lucid.zeros(2, 4, 16, 32, 32) # in_channels=4 inferred
>>> y = lazy3d(x)
>>> y.shape
(2, 32, 16, 32, 32)
Verify materialization:
>>> import lucid
>>> import lucid.nn as nn
>>> lazy3d = nn.LazyConv3d(out_channels=16, kernel_size=3, padding=1)
>>> print(lazy3d.in_channels)
None
>>> _ = lazy3d(lucid.zeros(1, 8, 4, 4, 4))
>>> print(lazy3d.in_channels)
8Methods (3)
__init__
→None__init__(out_channels: int, kernel_size: _Size3d, stride: _Size3d = 1, padding: _Size3d | str = 0, dilation: _Size3d = 1, groups: int = 1, bias: bool = True, padding_mode: str = 'zeros', device: DeviceLike = None, dtype: DTypeLike = None)Initialise the LazyConv3d module. See the class docstring for parameter semantics.
forward
→Tensorforward(x: Tensor)Apply the convolution to the input tensor.
Parameters
inputTensorReturns
TensorOutput tensor of shape with spatial dimensions determined by stride, padding, dilation, and kernel size.
extra_repr
→strextra_repr()Return a string representation of the layer's configuration.