MinkowskiConvolution¶
在此类中定义的所有类都不需要 region_type
、region_offset
、out_coords_key
和 axis_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 参数和缓冲区期望的内存 格式(仅限关键字参数)
- device (
- 返回
模块: 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 参数和缓冲区期望的内存 格式(仅限关键字参数)
- device (
- 返回
模块: 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 参数和缓冲区期望的内存 格式(仅限关键字参数)
- device (
- 返回
模块: 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 参数和缓冲区期望的内存 格式(仅限关键字参数)
- device (
- 返回
模块: 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
-