LazyConvTranspose3d
ConvTranspose3dLazyConvTranspose3d(out_channels: int, kernel_size: _Size3d, stride: _Size3d = 1, padding: _Size3d = 0, output_padding: _Size3d = 0, groups: int = 1, bias: bool = True, dilation: _Size3d = 1, device: DeviceLike = None, dtype: DTypeLike = None)A ConvTranspose3d that infers in_channels from the first input.
Lazy version of the 3D transposed convolution. Combines volumetric upsampling with deferred weight allocation, simplifying the construction of 3D generative decoders and medical image synthesis networks where channel dimensions are computed dynamically.
Parameters
out_channelsintkernel_sizeint or tuple[int, int, int]strideint or tuple[int, int, int]= 11.paddingint or tuple[int, int, int]= 0dilation * (kernel_size - 1) - padding zero-padding applied
on each side of each spatial axis. String padding is not
supported. Default: 0.output_paddingint or tuple[int, int, int]= 00.groupsint= 11.biasbool= TrueTrue, a learnable bias is added after materialization.
Default: True.dilationint or tuple[int, int, int]= 11.deviceDeviceLike= NoneNone.dtypeDTypeLike= NoneNone.Attributes
weightParameter or NoneNone before materialization; shape
(in_channels, out_channels // groups, K_D, K_H, K_W)
afterwards.biasParameter or NoneNone before materialization; (out_channels,) if
bias=True.in_channelsint or NoneNone before the first forward pass.Notes
Input:
— is
inferred automatically.
Output:
—
same formula as ConvTranspose3d.
State-dict loading. A 5-D weight tensor triggers
materialization before parameter copying.
Symmetric 3D encoder–decoder. Pair each LazyConv3d
with a LazyConvTranspose3d using matching kernel_size,
stride, and padding for lossless spatial reconstruction.
Examples
Lazy 3D decoder block:
>>> import lucid
>>> import lucid.nn as nn
>>> up3d = nn.LazyConvTranspose3d(
... out_channels=32, kernel_size=4, stride=2, padding=1
... )
>>> x = lucid.zeros(2, 64, 4, 8, 8) # in_channels=64 inferred
>>> y = up3d(x)
>>> y.shape
(2, 32, 8, 16, 16)
Verify materialization:
>>> import lucid
>>> import lucid.nn as nn
>>> lazy = nn.LazyConvTranspose3d(out_channels=16, kernel_size=3, padding=1)
>>> print(lazy.in_channels)
None
>>> _ = lazy(lucid.zeros(1, 8, 4, 4, 4))
>>> print(lazy.in_channels)
8Methods (3)
__init__
→None__init__(out_channels: int, kernel_size: _Size3d, stride: _Size3d = 1, padding: _Size3d = 0, output_padding: _Size3d = 0, groups: int = 1, bias: bool = True, dilation: _Size3d = 1, device: DeviceLike = None, dtype: DTypeLike = None)Initialise the LazyConvTranspose3d 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.