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]
Return type:

Dict

Parameters:
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:

SparseTensor

Parameters:
torch_lattice.nn.functional.conv.get_conv_mode()[source]
Return type:

ConvMode

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 by sqrt(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:

SparseTensor

Parameters:
torch_lattice.nn.functional.conv.set_conv_mode(conv_mode)[source]
Return type:

None

Parameters:

conv_mode (int | ConvMode)

torch_lattice.nn.functional.conv.spdownsample(_coords, stride=2, kernel_size=2, padding=0, spatial_range=None, downsample_mode='spconv')[source]
Return type:

Tensor

Parameters:
torch_lattice.nn.functional.conv.spupsample_generative(_coords, stride=2, kernel_size=2, padding=0, spatial_range=None)[source]
Return type:

Tensor

Parameters:
torch_lattice.nn.functional.conv.transpose_kernel_map(kmap, ifsort=False, training=False, split_mask_num=1, split_mask_num_bwd=1)[source]
Return type:

Dict

Parameters:
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:

SparseTensor

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 by sqrt(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:

SparseTensor

Parameters: