Minkowski坐标管理
Minkowski坐标管理
坐标键
classMinkowskiEngine.CoordsKey(D)
__init__(D)
初始化self. See help(type(self))有关准确的签名。
getKey()
getTensorStride()
isKeySet()
setKey(key)
setTensorStride(tensor_stride)
坐标管理器
Class MinkowskiEngine.CoordsManager(num_threads : int = -1,memory_manager_backend : MinkowskiEngineBackend.MemoryManagerBackend = None,D : int = -1)
__init__(num_threads : int = -1,memory_manager_backend : MinkowskiEngineBackend.MemoryManagerBackend = None,D : int = -1)
初始化self. See help(type(self))有关准确的签名。
create_coords_key(COORDS : torch.IntTensor,tensor_stride : INT = 1,force_creation : BOOL = False,force_remap : BOOL = False,allow_duplicate_coords : BOOL = False) → MinkowskiCoords.CoordsKey
get_batch_indices()
get_batch_size()
get_coords(coords_key_or_tensor_strides)
get_coords_map(in_key_or_tensor_strides,out_key_or_tensor_strides)
提取映射到输出坐标索引的输入坐标索引。
sp_tensor = ME.SparseTensor(features, coords=coordinates)
out_sp_tensor = stride_2_conv(sp_tensor)
cm = sp_tensor.coords_man
# cm = out_sp_tensor.coords_man # doesn't matter which tensor you pick
ins, outs = cm.get_coords_map(1, # in stride
2) # out stride
for i, o in zip(ins, outs):
print(f"{i} -> {o}")
get_coords_size_by_coords_key(coords_key)
get_kernel_map(in_key_or_tensor_strides,out_key_or_tensor_strides,stride = 1,kernel_size = 3,dilation = 1,region_type = 0,region_offset = None,is_transpose = False,is_pool = False,on_gpu = False)
获取指定坐标键或张量stride的内核出入映射。
get_mapping_by_tensor_strides(in_tensor_strides,out_tensor_strides)
get_row_indices_at(coords_key,batch_index)
返回指定批处理索引的torch.LongTensor行索引
sp_tensor = ME.SparseTensor(features, coords=coordinates)
row_indices = sp_tensor.coords_man.get_row_indices_at(sp_tensor.coords_key, batch_index)
get_row_indices_per_batch(coords_key,out_coords_key =None)
返回每个批次的行索引List。
相应的批处理索引可通过get_batch_indices访问。
sp_tensor = ME.SparseTensor(features, coords=coordinates)
row_indices = sp_tensor.coords_man.get_row_indices_per_batch(sp_tensor.coords_key)
get_union_map(in_keys : List[ MinkowskiCoords.CoordsKey],out_key : MinkowskiCoords.CoordsKey)
生成坐标集的并集,并将映射从输入集返回到新的输出坐标。
精氨酸:
in_keys (List [CoordsKey]):在其上创建并集的坐标键List。
out_key (CoordsKey):生成的并列坐标散列图的坐标键的占位符。
返回值:
in_maps(List [Tensor [int]]):长张量的List,其中包含从输入到联合输出的映射。请参阅示例以获取更多详细信息。 out_maps(List [Tensor [int]]):长张量的List,其中包含从输入到联合输出的映射。请参阅示例以获取更多详细信息。
例:
>>> # Adding two sparse tensors: A, B
>>> out_key = CoordsKey(coords_man.D)
>>> ins, outs = coords_man.get_union_map((A.coords_key, B.coords_key), out_key)
>>> N = coords_man.get_coords_size_by_coords_key(out_key)
>>> out_F = torch.zeros((N, A.F.size(1)), dtype=A.dtype)
>>> out_F[outs[0]] = A.F[ins[0]]
>>> out_F[outs[1]] += B.F[ins[1]]
initialize(COORDS : torch.IntTensor,coords_key : MinkowskiCoords.CoordsKey,force_creation : BOOL = False,force_remap : BOOL = False,allow_duplicate_coords : BOOL = False,return_inverse : BOOL = False) →torch.LongTensor
permute_label(label,max_label,target_tensor_stride,label_tensor_stride = 1)
print_diagnostics(coords_key : MinkowskiCoords.CoordsKey)
reduce()
set_origin_coords_key(coords_key : MinkowskiCoords.CoordsKey)
stride(coords_key : MinkowskiCoords.CoordsKey,stride: Union [ int , collections.abc.Sequence , numpy.ndarray , Torch.Tensor ],force_creation : bool = False)
transposed_stride(coords_key : MinkowskiCoords.CoordsKey,stride: Union [ int , collections.abc.Sequence , numpy.ndarray , torch.Tensor ],kernel_size : Union [ int , collections.abc.Sequence , numpy.ndarray , torch.Tensor ],dilation: Union [ int , collections.abc.Sequence , numpy.ndarray , Torch.Tensor ],force_creation : bool = False)
坐标GPU内存管理器
classMinkowskiEngine.MemoryManagerBackend
Members:
CUDA
PYTORCH
property name
(self: handle) -> str
MinkowskiEngine.MinkowskiCoords.set_memory_manager_backend(backend:MinkowskiEngineBackend.MemoryManagerBackend)
设置GPU内存管理器后端
默认情况下,Minkowski引擎将使用pytorch内存池分配临时GPU内存插槽。这使pytorch后端可以有效地重用pytorch后端和Minkowski引擎之间共享的内存池。给定固定的GPU内存,它倾向于允许以较大的批处理量进行训练。但是,pytorch内存管理器往往比直接使用原始CUDA调用分配GPU慢。
默认情况下,Minkowski引擎 ME.MemoryManagerBackend.PYTORCH用于内存管理。
例:
>>> import MinkowskiEngine as ME
>>> # Set the GPU memory manager backend to raw CUDA calls
>>> ME.set_memory_manager_backend(ME.MemoryManagerBackend.CUDA)
>>> # Set the GPU memory manager backend to the pytorch memory pool
>>> ME.set_memory_manager_backend(ME.MemoryManagerBackend.PYTORCH)
Minkowski坐标管理的更多相关文章
- 03-Maven坐标管理
1.什么是坐标? 2.坐标的详细概念 3.Maven包引用
- Maven仓库详解
转载自:Maven入门指南④:仓库 1 . 仓库简介 没有 Maven 时,项目用到的 .jar 文件通常需要拷贝到 /lib 目录,项目多了,拷贝的文件副本就多了,占用磁盘空间,且难于管理.Ma ...
- Maven入门指南④:仓库
1 . 仓库简介 没有 Maven 时,项目用到的 .jar 文件通常需要拷贝到 /lib 目录,项目多了,拷贝的文件副本就多了,占用磁盘空间,且难于管理.Maven 使用一个称之为仓库的目录,根据构 ...
- tkinter模块
Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...
- C#基础教程/适合初学者
C#基础教程 第一章 C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序.当 ...
- c4d 帮助 prime r16 usage
c4d 帮助 prime cinema 4d prime c4d 基础 前言 usage 开始 双击程序图标 双击一个场景文件 用开始菜单 windows 二选一 从 ...
- 基于Web实现在线绘画拓扑图[GraphEditor]
网络拓扑图本来已经整理有一段时间了,一次项目会议写集中边界监控系统的时候上级要求使用可以在系统中画网络拓扑图,没办法当时找不到现有的程序来参考 只能硬着头皮,顶着风险来完成[当然来边界安全的,当然要安 ...
- OpenDaylight开发hello-world项目之代码框架搭建
OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...
- Maven实战01_Maven简介
1:何为Maven Maven:中文翻译为"知识的积累",也可翻译为"专家"或"内行". 谈到Maven,就不得不提"构建(bui ...
随机推荐
- 【CPU100%排查】CPU100%问题排查方案
1.使用top -c 查看CPU 占用情况 ,按P(大写)可以倒序查看占CPU占用率 2.找到占用率高的进程以后,再定位到具体线程 比如 此时进程ID 14724 CPU占用高,进一步使用top - ...
- hdu4975 行列和构造矩阵(dp判断唯一性)
题意: 和hdu4888一样,只不过是数据加强了,就是给你行列的和,让你构造一个矩阵,然后判断矩阵是否唯一. 思路: 构造矩阵很简单,跑一次最大流就行了,关键是判断矩阵的唯一性 ...
- UVA10391复合词
题意: 给定一个词典,然后问里面那些是复合词,复合词就是当前这个单词正好是有两个单词拼接而成. 思路: 用map来标记是否出现过,然后先按长短排序,把每个单体拆分成任意两个可能的 ...
- 在 GitHub 学习,成长为自己想要的样子|HelloGitHub 访谈
万事开头难,我们经过长期的策划和筹备,终于推出了 HelloGitHub 采访系列「开源项目作者的访谈」.这是一个采访个人开源项目作者的栏目,内容侧重于开源项目作者与开源的故事. 我们深知想要做好一个 ...
- Day002 Java特性和优势
Java特性和优势 简单性(摒弃了c++的指针和内存分配释放) 面向对象(万物皆对象) 可移植性(write once run anywhere) 高性能 分布式 动态性(反射机制) 多线程 安全性 ...
- Eureka讲解与应用
Eureka[juˈriːkə] 简介 Eureka是Netflix服务发现的服务端与客户端,Eureka提供服务注册以及服务发现的能力,当是Eureka Server时(注册中心),所有的客户端会向 ...
- springboot开发浅谈 2021/05/11
学习了这么久,本人希望有时间能分享一下,这才写下这篇浅谈,谈谈软件,散散心情. 这是本人的博客园账号,欢迎关注,一起学习. 一开始学习springboot,看了好多网站,搜了好多课程.零零落落学了一些 ...
- Git 系列教程(8)- 远程仓库的使用
查看远程仓库 如果想查看你已经配置的远程仓库服务器,可以运行 git remote 命令,它会列出你指定的每一个远程服务器的名称 如果是刚 clone 下来的自己的库,能看到 origin,这是 Gi ...
- char值不能直接用作数组下标
#include <stdio.h> //用 char 的值作为数组下标(例如,统计字符串中每个字符出现的次数),要考虑到 //char 可能是负数.有的人考虑到了,先强制转型为 unsi ...
- JS数组的操作方法汇总
数组的增删 push():添加到最后 pop():取出最后一个 shift():取出第一个 unshift():添加到第一个 splice() : 返回删除的数组,如果没有则为空数组,会改变原数组.可 ...