坐标管理

CoordinateMapKey

class MinkowskiEngine.CoordinateMapKey
__init__(*args, **kwargs)

重载函数。

  1. __init__(self: MinkowskiEngineBackend._C.CoordinateMapKey, arg0: int) -> None

  2. __init__(self: MinkowskiEngineBackend._C.CoordinateMapKey, arg0: List[int], arg1: str) -> None

get_coordinate_size(self: MinkowskiEngineBackend._C.CoordinateMapKey) → int
get_key(self: MinkowskiEngineBackend._C.CoordinateMapKey) → Tuple[List[int], str]
get_tensor_stride(self: MinkowskiEngineBackend._C.CoordinateMapKey) → List[int]
is_key_set(self: MinkowskiEngineBackend._C.CoordinateMapKey) → bool
set_key(*args, **kwargs)

重载函数。

  1. set_key(self: MinkowskiEngineBackend._C.CoordinateMapKey, arg0: List[int], arg1: str) -> None

  2. set_key(self: MinkowskiEngineBackend._C.CoordinateMapKey, arg0: Tuple[List[int], str]) -> None

CoordinateManager

class MinkowskiEngine.CoordinateManager(D: int = 0, num_threads: int = - 1, coordinate_map_type: Optional[MinkowskiEngineBackend._C.CoordinateMapType] = None, allocator_type: Optional[MinkowskiEngineBackend._C.GPUMemoryAllocatorType] = None, minkowski_algorithm: Optional[MinkowskiEngineBackend._C.MinkowskiAlgorithm] = None)
__init__(D: int = 0, num_threads: int = - 1, coordinate_map_type: Optional[MinkowskiEngineBackend._C.CoordinateMapType] = None, allocator_type: Optional[MinkowskiEngineBackend._C.GPUMemoryAllocatorType] = None, minkowski_algorithm: Optional[MinkowskiEngineBackend._C.MinkowskiAlgorithm] = None)

D:坐标的阶数或维度。

exists_field_to_sparse(field_map_key: MinkowskiEngineBackend._C.CoordinateMapKey, sparse_map_key: MinkowskiEngineBackend._C.CoordinateMapKey)
field_to_sparse_insert_and_map(field_map_key: MinkowskiEngineBackend._C.CoordinateMapKey, sparse_tensor_stride: Union[int, collections.abc.Sequence, numpy.ndarray], sparse_tensor_string_id: str = '') → Tuple[MinkowskiEngineBackend._C.CoordinateMapKey, Tuple[torch.IntTensor, torch.IntTensor]]

使用张量步长创建稀疏张量坐标映射。

field_map_key ( CoordinateMapKey ): 将从中创建新稀疏张量的字段映射。

tensor_stride ( list ): 一个包含 D 个元素的列表,用于定义新的 D+1 阶稀疏张量的张量步长。

string_id ( str ): 新稀疏张量坐标映射键的字符串 ID。

示例

>>> manager = CoordinateManager(D=1)
>>> coordinates = torch.FloatTensor([[0, 0.1], [0, 2.3], [0, 1.2], [0, 2.4]])
>>> key, (unique_map, inverse_map) = manager.insert(coordinates, [1])
field_to_sparse_keys(field_map_key: MinkowskiEngineBackend._C.CoordinateMapKey)
field_to_sparse_map(field_map_key: MinkowskiEngineBackend._C.CoordinateMapKey, sparse_map_key: MinkowskiEngineBackend._C.CoordinateMapKey)
get_coordinate_field(coords_key_or_tensor_strides) → torch.Tensor
get_coordinates(coords_key_or_tensor_strides) → torch.Tensor
get_field_to_sparse_map(field_map_key: MinkowskiEngineBackend._C.CoordinateMapKey, sparse_map_key: MinkowskiEngineBackend._C.CoordinateMapKey)
get_kernel_map(in_key: MinkowskiEngineBackend._C.CoordinateMapKey, out_key: MinkowskiEngineBackend._C.CoordinateMapKey, stride=1, kernel_size=3, dilation=1, region_type=<RegionType.HYPER_CUBE: 0>, region_offset=None, is_transpose=False, is_pool=False) → dict

CoordinateManager.kernel_map的别名。 将在下一个版本中弃用。

get_unique_coordinate_map_key(tensor_stride: Union[int, list]) → MinkowskiEngineBackend._C.CoordinateMapKey

返回给定张量步长的唯一 coordinate_map_key。

tensor_stride ( list ): 一个包含 D 个元素的列表,用于定义新的 D+1 阶稀疏张量的张量步长。

insert_and_map(coordinates: torch.Tensor, tensor_stride: Union[int, collections.abc.Sequence, numpy.ndarray] = 1, string_id: str = '') → Tuple[MinkowskiEngineBackend._C.CoordinateMapKey, Tuple[torch.IntTensor, torch.IntTensor]]

创建一个新的坐标映射并返回 (key, (map, inverse_map))。

coordinatestorch.Tensor (Int 张量。如果 coordinate_map_type == CoordinateMapType.GPU,则为 CUDA),用于定义坐标。

tensor_stride ( list ): 一个包含 D 个元素的列表,用于定义新的 D+1 阶稀疏张量的张量步长。

示例

>>> manager = CoordinateManager(D=1)
>>> coordinates = torch.IntTensor([[0, 0], [0, 0], [0, 1], [0, 2]])
>>> key, (unique_map, inverse_map) = manager.insert(coordinates, [1])
>>> print(key) # key is tensor_stride, string_id [1]:""
>>> torch.all(coordinates[unique_map] == manager.get_coordinates(key)) # True
>>> torch.all(coordinates == coordinates[unique_map][inverse_map]) # True
insert_field(coordinates: torch.Tensor, tensor_stride: collections.abc.Sequence, string_id: str = '') → Tuple[MinkowskiEngineBackend._C.CoordinateMapKey, Tuple[torch.IntTensor, torch.IntTensor]]

创建一个新的坐标映射并返回

coordinates: 定义坐标的 torch.FloatTensor (如果 coordinate_map_type == CoordinateMapType.GPU,则为 CUDA)。

tensor_stride ( list ): 一个包含 D 个元素的列表,用于定义新的 D+1 阶稀疏张量的张量步长。

示例

>>> manager = CoordinateManager(D=1)
>>> coordinates = torch.FloatTensor([[0, 0.1], [0, 2.3], [0, 1.2], [0, 2.4]])
>>> key, (unique_map, inverse_map) = manager.insert(coordinates, [1])
>>> print(key) # key is tensor_stride, string_id [1]:""
>>> torch.all(coordinates[unique_map] == manager.get_coordinates(key)) # True
>>> torch.all(coordinates == coordinates[unique_map][inverse_map]) # True
interpolation_map_weight(key: MinkowskiEngineBackend._C.CoordinateMapKey, samples: torch.Tensor)
kernel_map(in_key: MinkowskiEngineBackend._C.CoordinateMapKey, out_key: MinkowskiEngineBackend._C.CoordinateMapKey, stride=1, kernel_size=3, dilation=1, region_type=<RegionType.HYPER_CUBE: 0>, region_offset=None, is_transpose=False, is_pool=False) → dict

获取指定坐标键或张量步长的内核输入-输出映射。

返回 dict{kernel_index: in_out_tensor},其中 in_out_tensor[0] 是与 in_out_tensor[1] 对应的输入行索引,in_out_tensor[1] 是输出的行索引。

number_of_unique_batch_indices() → int
origin() → MinkowskiEngineBackend._C.CoordinateMapKey
origin_field() → MinkowskiEngineBackend._C.CoordinateMapKey
origin_field_map(key: MinkowskiEngineBackend._C.CoordinateMapKey)
origin_map(key: MinkowskiEngineBackend._C.CoordinateMapKey)
size(coordinate_map_key: MinkowskiEngineBackend._C.CoordinateMapKey) → int
stride(coordinate_map_key: MinkowskiEngineBackend._C.CoordinateMapKey, stride: Union[int, collections.abc.Sequence, numpy.ndarray, torch.Tensor], string_id: str = '') → MinkowskiEngineBackend._C.CoordinateMapKey

生成一个新的坐标映射并返回键。

coordinate_map_key (MinkowskiEngine.CoordinateMapKey): 从其生成步长映射的输入映射。

stride: 步长大小。

stride_map(in_key: MinkowskiEngineBackend._C.CoordinateMapKey, stride_key: MinkowskiEngineBackend._C.CoordinateMapKey)
union_map(in_keys: list, out_key)

GPU 内存分配器

class MinkowskiEngine.GPUMemoryAllocatorType

成员

PYTORCH

CUDA

property name
MinkowskiEngine.set_gpu_allocator(backend: MinkowskiEngineBackend._C.GPUMemoryAllocatorType)

设置 GPU 内存分配器

默认情况下,Minkowski 引擎将使用 pytorch 内存池来分配临时的 GPU 内存槽。这允许 pytorch 后端有效地重用在 pytorch 后端和 Minkowski 引擎之间共享的内存池。在给定的固定 GPU 内存的情况下,这往往允许使用更大的批量大小进行训练。但是,pytorch 内存管理器往往比使用原始 CUDA 调用直接分配 GPU 内存要慢。

默认情况下,Minkowski 引擎使用 ME.GPUMemoryAllocatorType.PYTORCH 进行内存管理。

示例

>>> import MinkowskiEngine as ME
>>> # Set the GPU memory manager backend to raw CUDA calls
>>> ME.set_gpu_allocator(ME.GPUMemoryAllocatorType.CUDA)
>>> # Set the GPU memory manager backend to the pytorch c10 allocator
>>> ME.set_gpu_allocator(ME.GPUMemoryAllocatorType.PYTORCH)