MinkowskiConvolution

在此类中定义的所有类都不需要 region_typeregion_offsetout_coords_keyaxis_types。 如果您向类初始化提供这些参数,请确保您提供的是有效参数。

MinkowskiConvolution

class MinkowskiEngine.MinkowskiConvolution(in_channels, out_channels, kernel_size=-1, stride=1, dilation=1, bias=False, kernel_generator=None, expand_coordinates=False, convolution_mode=<ConvolutionMode.DEFAULT: 0>, dimension=None)

稀疏张量的卷积层。

\[\mathbf{x}_\mathbf{u} = \sum_{\mathbf{i} \in \mathcal{N}^D(\mathbf{u}, K, \mathcal{C}^\text{in})} W_\mathbf{i} \mathbf{x}_{\mathbf{i} + \mathbf{u}} \;\text{for} \; \mathbf{u} \in \mathcal{C}^\text{out}\]

其中 \(K\) 是核大小,\(\mathcal{N}^D(\mathbf{u}, K, \mathcal{C}^\text{in})\) 是距离 \(\mathbf{u}\) 最多 \(\left \lceil{\frac{1}{2}(K - 1)} \right \rceil\) 的偏移量的集合,定义在 \(\mathcal{S}^\text{in}\) 中。

注意

对于偶数 \(K\),核偏移量 \(\mathcal{N}^D\) 的实现与上述定义不同。 偏移量的范围为 \(\mathbf{i} \in [0, K)^D, \; \mathbf{i} \in \mathbb{Z}_+^D\)

__init__(in_channels, out_channels, kernel_size=-1, stride=1, dilation=1, bias=False, kernel_generator=None, expand_coordinates=False, convolution_mode=<ConvolutionMode.DEFAULT: 0>, dimension=None)

稀疏张量上的卷积

Args

in_channels (int): 输入张量中的输入通道数。

out_channels (int): 输出张量中的输出通道数。

kernel_size (int, 可选): 输出张量中核的大小。 如果未提供,则 region_offset 应该为 RegionType.CUSTOM,并且 region_offset 应该是一个大小为 \(N\times D\) 的 2D 矩阵,以便它列出 D 维中的所有 \(N\) 个偏移量。

stride (int, 或 list, 可选): 卷积层的步长大小。 如果使用非恒等式,则输出坐标将至少相距 stride \(\times\) tensor_stride。 当给定一个列表时,长度必须为 D; 每个元素将用于特定轴的步长大小。

dilation (int, 或 list, 可选): 卷积核的膨胀大小。 当给定一个列表时,长度必须为 D,并且每个元素都是轴特定的膨胀。 所有元素都必须 > 0。

bias (bool, 可选): 如果为 True,则卷积层具有偏差。

kernel_generator (MinkowskiEngine.KernelGenerator, 可选): 定义自定义核形状。

expand_coordinates (bool, 可选): 强制生成新坐标。 如果为 True,则输出坐标将是核形状和输入坐标的外积。 默认为 False

dimension (int): 所有输入和网络所在空间的空间维度。 例如,图像位于 2D 空间中,网格和 3D 形状位于 3D 空间中。

cpu() → T

将所有模型参数和缓冲区移动到 CPU。

返回

模块: self

cuda(device: Optional[Union[int, torch.device]] = None) → T

将所有模型参数和缓冲区移动到 GPU。

这也使得相关的参数和缓冲区成为不同的对象。 因此,如果模块将在 GPU 上运行并进行优化,则应在构造优化器之前调用它。

参数
device (int, optional): 如果指定,所有参数将被

复制到该设备

返回

模块: self

double() → T

将所有浮点参数和缓冲区强制转换为 double 数据类型。

返回

模块: self

float() → T

将所有浮点参数和缓冲区强制转换为 float 数据类型。

返回

模块: self

forward(input: MinkowskiSparseTensor.SparseTensor, coordinates: Optional[Union[torch.Tensor, MinkowskiEngineBackend._C.CoordinateMapKey, MinkowskiSparseTensor.SparseTensor]] = None)

input (MinkowskiEngine.SparseTensor): 要应用卷积的输入稀疏张量。

coordinates ((torch.IntTensor, MinkowskiEngine.CoordinateMapKey, MinkowskiEngine.SparseTensor), optional): 如果提供,则在提供的坐标上生成结果。 默认为 None。

to(*args, **kwargs)

移动和/或转换参数和缓冲区。

可以这样调用

to(device=None, dtype=None, non_blocking=False)
to(dtype, non_blocking=False)
to(tensor, non_blocking=False)
to(memory_format=torch.channels_last)

它的签名类似于 torch.Tensor.to(), 但仅接受浮点型目标 dtype 。此外,此方法只会将浮点型参数和缓冲区转换为 dtype(如果给定)。整数型参数和缓冲区将被移动到 device(如果给定),但数据类型保持不变。当 non_blocking 设置为真时,它会尝试相对于主机异步转换/移动,例如,将具有锁定内存的 CPU 张量移动到 CUDA 设备。

请参见下面的示例。

注意

此方法会修改模块本身。

Args
device (torch.device): 此模块中参数和期望缓冲区的设备

和此模块中的缓冲区

dtype (torch.dtype): 浮点型参数和缓冲区期望的浮点类型

此模块中浮点参数和缓冲区

tensor (torch.Tensor): 张量,其 dtype 和 device 是此模块中所有参数和缓冲区所需的

dtype 和 device

memory_format (torch.memory_format): 此模块中 4D 参数和缓冲区期望的内存

格式(仅限关键字参数)

返回

模块: self

示例

>>> linear = nn.Linear(2, 2)
>>> linear.weight
Parameter containing:
tensor([[ 0.1913, -0.3420],
        [-0.5113, -0.2325]])
>>> linear.to(torch.double)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1913, -0.3420],
        [-0.5113, -0.2325]], dtype=torch.float64)
>>> gpu1 = torch.device("cuda:1")
>>> linear.to(gpu1, dtype=torch.half, non_blocking=True)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1914, -0.3420],
        [-0.5112, -0.2324]], dtype=torch.float16, device='cuda:1')
>>> cpu = torch.device("cpu")
>>> linear.to(cpu)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1914, -0.3420],
        [-0.5112, -0.2324]], dtype=torch.float16)
type(dst_type: Union[torch.dtype, str]) → T

将所有参数和缓冲区转换为 dst_type

参数

dst_type (type or string): 期望的类型

返回

模块: self

MinkowskiChannelwiseConvolution

class MinkowskiEngine.MinkowskiChannelwiseConvolution(in_channels, kernel_size=- 1, stride=1, dilation=1, bias=False, kernel_generator=None, dimension=- 1)
__init__(in_channels, kernel_size=- 1, stride=1, dilation=1, bias=False, kernel_generator=None, dimension=- 1)

稀疏张量上的卷积

Args

in_channels (int): 输入张量中的输入通道数。

kernel_size (int, 可选): 输出张量中核的大小。 如果未提供,则 region_offset 应该为 RegionType.CUSTOM,并且 region_offset 应该是一个大小为 \(N\times D\) 的 2D 矩阵,以便它列出 D 维中的所有 \(N\) 个偏移量。

stride (int, 或 list, 可选): 卷积层的步长大小。 如果使用非恒等式,则输出坐标将至少相距 stride \(\times\) tensor_stride。 当给定一个列表时,长度必须为 D; 每个元素将用于特定轴的步长大小。

dilation (int, 或 list, 可选): 卷积核的膨胀大小。 当给定一个列表时,长度必须为 D,并且每个元素都是轴特定的膨胀。 所有元素都必须 > 0。

bias (bool, 可选): 如果为 True,则卷积层具有偏差。

kernel_generator (MinkowskiEngine.KernelGenerator, optional): 定义自定义核形状。

dimension (int): 所有输入和网络所在空间的空间维度。 例如,图像位于 2D 空间中,网格和 3D 形状位于 3D 空间中。

cpu() → T

将所有模型参数和缓冲区移动到 CPU。

返回

模块: self

cuda(device: Optional[Union[int, torch.device]] = None) → T

将所有模型参数和缓冲区移动到 GPU。

这也使得相关的参数和缓冲区成为不同的对象。 因此,如果模块将在 GPU 上运行并进行优化,则应在构造优化器之前调用它。

参数
device (int, optional): 如果指定,所有参数将被

复制到该设备

返回

模块: self

double() → T

将所有浮点参数和缓冲区强制转换为 double 数据类型。

返回

模块: self

float() → T

将所有浮点参数和缓冲区强制转换为 float 数据类型。

返回

模块: self

forward(input: MinkowskiSparseTensor.SparseTensor, coords: Optional[Union[torch.IntTensor, MinkowskiEngineBackend._C.CoordinateMapKey, MinkowskiSparseTensor.SparseTensor]] = None)

input (MinkowskiEngine.SparseTensor): 要应用卷积的输入稀疏张量。

coords ((torch.IntTensor, MinkowskiEngine.CoordinateMapKey, MinkowskiEngine.SparseTensor), optional): 如果提供,则在提供的坐标上生成结果。 默认值为 None。

to(*args, **kwargs)

移动和/或转换参数和缓冲区。

可以这样调用

to(device=None, dtype=None, non_blocking=False)
to(dtype, non_blocking=False)
to(tensor, non_blocking=False)
to(memory_format=torch.channels_last)

它的签名类似于 torch.Tensor.to(), 但仅接受浮点型目标 dtype 。此外,此方法只会将浮点型参数和缓冲区转换为 dtype(如果给定)。整数型参数和缓冲区将被移动到 device(如果给定),但数据类型保持不变。当 non_blocking 设置为真时,它会尝试相对于主机异步转换/移动,例如,将具有锁定内存的 CPU 张量移动到 CUDA 设备。

请参见下面的示例。

注意

此方法会修改模块本身。

Args
device (torch.device): 此模块中参数和期望缓冲区的设备

和此模块中的缓冲区

dtype (torch.dtype): 浮点型参数和缓冲区期望的浮点类型

此模块中浮点参数和缓冲区

tensor (torch.Tensor): 张量,其 dtype 和 device 是此模块中所有参数和缓冲区所需的

dtype 和 device

memory_format (torch.memory_format): 此模块中 4D 参数和缓冲区期望的内存

格式(仅限关键字参数)

返回

模块: self

示例

>>> linear = nn.Linear(2, 2)
>>> linear.weight
Parameter containing:
tensor([[ 0.1913, -0.3420],
        [-0.5113, -0.2325]])
>>> linear.to(torch.double)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1913, -0.3420],
        [-0.5113, -0.2325]], dtype=torch.float64)
>>> gpu1 = torch.device("cuda:1")
>>> linear.to(gpu1, dtype=torch.half, non_blocking=True)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1914, -0.3420],
        [-0.5112, -0.2324]], dtype=torch.float16, device='cuda:1')
>>> cpu = torch.device("cpu")
>>> linear.to(cpu)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1914, -0.3420],
        [-0.5112, -0.2324]], dtype=torch.float16)
type(dst_type: Union[torch.dtype, str]) → T

将所有参数和缓冲区转换为 dst_type

参数

dst_type (type or string): 期望的类型

返回

模块: self

MinkowskiConvolutionTranspose

class MinkowskiEngine.MinkowskiConvolutionTranspose(in_channels, out_channels, kernel_size=-1, stride=1, dilation=1, bias=False, kernel_generator=None, expand_coordinates=False, convolution_mode=<ConvolutionMode.DEFAULT: 0>, dimension=None)

广义稀疏转置卷积或反卷积层。

__init__(in_channels, out_channels, kernel_size=-1, stride=1, dilation=1, bias=False, kernel_generator=None, expand_coordinates=False, convolution_mode=<ConvolutionMode.DEFAULT: 0>, dimension=None)

一个广义稀疏转置卷积层。

Args

in_channels (int): 输入张量中的输入通道数。

out_channels (int): 输出张量中的输出通道数。

kernel_size (int, 可选): 输出张量中核的大小。 如果未提供,则 region_offset 应该为 RegionType.CUSTOM,并且 region_offset 应该是一个大小为 \(N\times D\) 的 2D 矩阵,以便它列出 D 维中的所有 \(N\) 个偏移量。

stride (int, or list, optional): 定义上采样率的步长大小。 如果使用非恒等式,则输出坐标将相距 tensor_stride / stride。 当给出列表时,长度必须为 D; 每个元素将用于特定轴的步长大小。

dilation (int, 或 list, 可选): 卷积核的膨胀大小。 当给定一个列表时,长度必须为 D,并且每个元素都是轴特定的膨胀。 所有元素都必须 > 0。

bias (bool, 可选): 如果为 True,则卷积层具有偏差。

kernel_generator (MinkowskiEngine.KernelGenerator, 可选): 定义自定义核形状。

expand_coordinates (bool, 可选): 强制生成新坐标。 如果为 True,则输出坐标将是核形状和输入坐标的外积。 默认为 False

dimension (int): 所有输入和网络所在空间的空间维度。 例如,图像位于 2D 空间中,网格和 3D 形状位于 3D 空间中。

cpu() → T

将所有模型参数和缓冲区移动到 CPU。

返回

模块: self

cuda(device: Optional[Union[int, torch.device]] = None) → T

将所有模型参数和缓冲区移动到 GPU。

这也使得相关的参数和缓冲区成为不同的对象。 因此,如果模块将在 GPU 上运行并进行优化,则应在构造优化器之前调用它。

参数
device (int, optional): 如果指定,所有参数将被

复制到该设备

返回

模块: self

double() → T

将所有浮点参数和缓冲区强制转换为 double 数据类型。

返回

模块: self

float() → T

将所有浮点参数和缓冲区强制转换为 float 数据类型。

返回

模块: self

forward(input: MinkowskiSparseTensor.SparseTensor, coordinates: Optional[Union[torch.Tensor, MinkowskiEngineBackend._C.CoordinateMapKey, MinkowskiSparseTensor.SparseTensor]] = None)

input (MinkowskiEngine.SparseTensor): 要应用卷积的输入稀疏张量。

coordinates ((torch.IntTensor, MinkowskiEngine.CoordinateMapKey, MinkowskiEngine.SparseTensor), optional): 如果提供,则在提供的坐标上生成结果。 默认为 None。

to(*args, **kwargs)

移动和/或转换参数和缓冲区。

可以这样调用

to(device=None, dtype=None, non_blocking=False)
to(dtype, non_blocking=False)
to(tensor, non_blocking=False)
to(memory_format=torch.channels_last)

它的签名类似于 torch.Tensor.to(), 但仅接受浮点型目标 dtype 。此外,此方法只会将浮点型参数和缓冲区转换为 dtype(如果给定)。整数型参数和缓冲区将被移动到 device(如果给定),但数据类型保持不变。当 non_blocking 设置为真时,它会尝试相对于主机异步转换/移动,例如,将具有锁定内存的 CPU 张量移动到 CUDA 设备。

请参见下面的示例。

注意

此方法会修改模块本身。

Args
device (torch.device): 此模块中参数和期望缓冲区的设备

和此模块中的缓冲区

dtype (torch.dtype): 浮点型参数和缓冲区期望的浮点类型

此模块中浮点参数和缓冲区

tensor (torch.Tensor): 张量,其 dtype 和 device 是此模块中所有参数和缓冲区所需的

dtype 和 device

memory_format (torch.memory_format): 此模块中 4D 参数和缓冲区期望的内存

格式(仅限关键字参数)

返回

模块: self

示例

>>> linear = nn.Linear(2, 2)
>>> linear.weight
Parameter containing:
tensor([[ 0.1913, -0.3420],
        [-0.5113, -0.2325]])
>>> linear.to(torch.double)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1913, -0.3420],
        [-0.5113, -0.2325]], dtype=torch.float64)
>>> gpu1 = torch.device("cuda:1")
>>> linear.to(gpu1, dtype=torch.half, non_blocking=True)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1914, -0.3420],
        [-0.5112, -0.2324]], dtype=torch.float16, device='cuda:1')
>>> cpu = torch.device("cpu")
>>> linear.to(cpu)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1914, -0.3420],
        [-0.5112, -0.2324]], dtype=torch.float16)
type(dst_type: Union[torch.dtype, str]) → T

将所有参数和缓冲区转换为 dst_type

参数

dst_type (type or string): 期望的类型

返回

模块: self

MinkowskiGenerativeConvolutionTranspose

class MinkowskiEngine.MinkowskiGenerativeConvolutionTranspose(in_channels, out_channels, kernel_size=-1, stride=1, dilation=1, bias=False, kernel_generator=None, convolution_mode=<ConvolutionMode.DEFAULT: 0>, dimension=None)

一个广义的稀疏转置卷积或反卷积层,用于生成新的坐标。

__init__(in_channels, out_channels, kernel_size=-1, stride=1, dilation=1, bias=False, kernel_generator=None, convolution_mode=<ConvolutionMode.DEFAULT: 0>, dimension=None)

一个广义的稀疏转置卷积层,用于创建新的坐标。

详情请参考 用于 3D 单阶段目标检测的生成式稀疏检测网络。 此外,如果您使用此函数,请引用以下论文。

>> @inproceedings{gwak2020gsdn, >> title={用于 3D 单阶段目标检测的生成式稀疏检测网络}, >> author={Gwak, JunYoung and Choy, Christopher B and Savarese, Silvio}, >> booktitle={欧洲计算机视觉会议}, >> year={2020} >> }

Args

in_channels (int): 输入张量中的输入通道数。

out_channels (int): 输出张量中的输出通道数。

kernel_size (int, 可选): 输出张量中核的大小。 如果未提供,则 region_offset 应该为 RegionType.CUSTOM,并且 region_offset 应该是一个大小为 \(N\times D\) 的 2D 矩阵,以便它列出 D 维中的所有 \(N\) 个偏移量。

stride (int, or list, optional): 定义上采样率的步长大小。 如果使用非恒等式,则输出坐标将相距 tensor_stride / stride。 当给出列表时,长度必须为 D; 每个元素将用于特定轴的步长大小。

dilation (int, 或 list, 可选): 卷积核的膨胀大小。 当给定一个列表时,长度必须为 D,并且每个元素都是轴特定的膨胀。 所有元素都必须 > 0。

bias (bool, 可选): 如果为 True,则卷积层具有偏差。

kernel_generator (MinkowskiEngine.KernelGenerator, 可选): 定义自定义核形状。

expand_coordinates (bool, optional): 强制生成新的坐标。当为 True 时,输出坐标将是内核形状和输入坐标的外积。 默认为 False

dimension (int): 所有输入和网络所在空间的空间维度。 例如,图像位于 2D 空间中,网格和 3D 形状位于 3D 空间中。

cpu() → T

将所有模型参数和缓冲区移动到 CPU。

返回

模块: self

cuda(device: Optional[Union[int, torch.device]] = None) → T

将所有模型参数和缓冲区移动到 GPU。

这也使得相关的参数和缓冲区成为不同的对象。 因此,如果模块将在 GPU 上运行并进行优化,则应在构造优化器之前调用它。

参数
device (int, optional): 如果指定,所有参数将被

复制到该设备

返回

模块: self

double() → T

将所有浮点参数和缓冲区强制转换为 double 数据类型。

返回

模块: self

float() → T

将所有浮点参数和缓冲区强制转换为 float 数据类型。

返回

模块: self

forward(input: MinkowskiSparseTensor.SparseTensor, coordinates: Optional[Union[torch.Tensor, MinkowskiEngineBackend._C.CoordinateMapKey, MinkowskiSparseTensor.SparseTensor]] = None)

input (MinkowskiEngine.SparseTensor): 要应用卷积的输入稀疏张量。

coordinates ((torch.IntTensor, MinkowskiEngine.CoordinateMapKey, MinkowskiEngine.SparseTensor), optional): 如果提供,则在提供的坐标上生成结果。 默认为 None。

to(*args, **kwargs)

移动和/或转换参数和缓冲区。

可以这样调用

to(device=None, dtype=None, non_blocking=False)
to(dtype, non_blocking=False)
to(tensor, non_blocking=False)
to(memory_format=torch.channels_last)

它的签名类似于 torch.Tensor.to(), 但仅接受浮点型目标 dtype 。此外,此方法只会将浮点型参数和缓冲区转换为 dtype(如果给定)。整数型参数和缓冲区将被移动到 device(如果给定),但数据类型保持不变。当 non_blocking 设置为真时,它会尝试相对于主机异步转换/移动,例如,将具有锁定内存的 CPU 张量移动到 CUDA 设备。

请参见下面的示例。

注意

此方法会修改模块本身。

Args
device (torch.device): 此模块中参数和期望缓冲区的设备

和此模块中的缓冲区

dtype (torch.dtype): 浮点型参数和缓冲区期望的浮点类型

此模块中浮点参数和缓冲区

tensor (torch.Tensor): 张量,其 dtype 和 device 是此模块中所有参数和缓冲区所需的

dtype 和 device

memory_format (torch.memory_format): 此模块中 4D 参数和缓冲区期望的内存

格式(仅限关键字参数)

返回

模块: self

示例

>>> linear = nn.Linear(2, 2)
>>> linear.weight
Parameter containing:
tensor([[ 0.1913, -0.3420],
        [-0.5113, -0.2325]])
>>> linear.to(torch.double)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1913, -0.3420],
        [-0.5113, -0.2325]], dtype=torch.float64)
>>> gpu1 = torch.device("cuda:1")
>>> linear.to(gpu1, dtype=torch.half, non_blocking=True)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1914, -0.3420],
        [-0.5112, -0.2324]], dtype=torch.float16, device='cuda:1')
>>> cpu = torch.device("cpu")
>>> linear.to(cpu)
Linear(in_features=2, out_features=2, bias=True)
>>> linear.weight
Parameter containing:
tensor([[ 0.1914, -0.3420],
        [-0.5112, -0.2324]], dtype=torch.float16)
type(dst_type: Union[torch.dtype, str]) → T

将所有参数和缓冲区转换为 dst_type

参数

dst_type (type or string): 期望的类型

返回

模块: self