Functional convolution¶
- class torch_lattice.nn.functional.conv.ConvMode(*values)[source]¶
Bases:
Enum- mode0 = 0¶
- mode1 = 1¶
- mode2 = 2¶
- class torch_lattice.nn.functional.conv.Dataflow(*values)[source]¶
Bases:
Enum- ImplicitGEMM = 0¶
- GatherScatter = 1¶
- FetchOnDemand = 2¶
- torch_lattice.nn.functional.conv.build_kernel_map(_coords, input_node_num, kernel_size=2, stride=2, padding=0, hashmap_keys=None, hashmap_vals=None, spatial_range=None, mode='hashmap', dataflow=Dataflow.ImplicitGEMM, downsample_mode='spconv', training=False, ifsort=False, generative=False, subm=False, split_mask_num=1, split_mask_num_bwd=1, FOD_fusion=True, IGEMM_center_only=False, inference=False)[source]¶
- torch_lattice.nn.functional.conv.conv3d(input, weight, kernel_size, bias=None, stride=1, padding=0, dilation=1, config=None, subm=False, transposed=False, generative=False, training=False, coordinates=None)[source]¶
Apply sparse convolution with generated or explicit target support.
- Return type:
- Parameters:
- torch_lattice.nn.functional.conv.normalized_conv3d(input, weight, kernel_size, bias=None, stride=1, padding=0, dilation=1, config=None, subm=False, transposed=False, generative=False, training=False, coordinates=None, eps=1e-08)[source]¶
Apply weight-normalized sparse convolution.
Non-pointwise kernels compute
conv(input, weight)and divide bysqrt(conv(ones, weight.square()) + eps)before applying bias. Both passes use the same coordinate manager and therefore reuse cached kernel relations. Pointwise kernels intentionally use ordinary matrix multiplication, matching the source normalized-convolution contract.- Return type:
- Parameters:
- torch_lattice.nn.functional.conv.spdownsample(_coords, stride=2, kernel_size=2, padding=0, spatial_range=None, downsample_mode='spconv')[source]¶
- torch_lattice.nn.functional.conv.spupsample_generative(_coords, stride=2, kernel_size=2, padding=0, spatial_range=None)[source]¶
- torch_lattice.nn.functional.conv.transpose_kernel_map(kmap, ifsort=False, training=False, split_mask_num=1, split_mask_num_bwd=1)[source]¶
- torch_lattice.nn.functional.conv.conv.conv3d(input, weight, kernel_size, bias=None, stride=1, padding=0, dilation=1, config=None, subm=False, transposed=False, generative=False, training=False, coordinates=None)[source]¶
Apply sparse convolution with generated or explicit target support.
- Return type:
- Parameters:
- torch_lattice.nn.functional.conv.conv.normalized_conv3d(input, weight, kernel_size, bias=None, stride=1, padding=0, dilation=1, config=None, subm=False, transposed=False, generative=False, training=False, coordinates=None, eps=1e-08)[source]¶
Apply weight-normalized sparse convolution.
Non-pointwise kernels compute
conv(input, weight)and divide bysqrt(conv(ones, weight.square()) + eps)before applying bias. Both passes use the same coordinate manager and therefore reuse cached kernel relations. Pointwise kernels intentionally use ordinary matrix multiplication, matching the source normalized-convolution contract.- Return type:
- Parameters: