坐标管理¶
CoordinateMapKey¶
-
class
MinkowskiEngine.
CoordinateMapKey
¶ -
__init__
(*args, **kwargs)¶ 重载函数。
__init__(self: MinkowskiEngineBackend._C.CoordinateMapKey, arg0: int) -> None
__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)¶ 重载函数。
set_key(self: MinkowskiEngineBackend._C.CoordinateMapKey, arg0: List[int], arg1: str) -> None
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))。
coordinates
:torch.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 内存分配器¶
-
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)