从phoc嵌入计算概率相关得分的函数
prob-phoc的Python项目详细描述
探针孔
Pythorch函数计算有意义的概率相关性得分 字符柱状图金字塔嵌入。 尽管它们被称为字符柱状图金字塔,但实际上 它们是一个由许多字符组成的金字塔。最后,每个字都是 由高维二进制向量表示。
见wiki 更多细节。
用法
库提供两个函数:cphoc
和pphoc
,它们是
类似于scipy的cdist
和pdist
:
这两个函数都可以在概率空间(其中 每个维度都是[0,1]范围内的实数,或者是对数概率内的实数 空间(其中每个维度是概率的对数)。这些也是 有时被称为实半环和对数半环。
importtorchfromprob_phocimportcphoc,pphocx=torch.Tensor(...)y=torch.Tensor(...)# Compute the log-relevance scores between all pairs of rows in x, y.# Note: x and y must have the PHOC log-probabilities.logprob=cphoc(x,y)# This is equivalent to:logprob=cphoc(x,y,method="sum_prod_log")# If your matrices have probabilities instead of log-probabilities, use:prob=cphoc(x,y,method="sum_prob_real")# Compute the log-relevance scores between all pairs of distinct rows in x.# Note: The output is a vector with N * (N - 1) / 2 elements.logprob=pphoc(x)
安装
最简单的方法是从pypi安装包:
pip install prob-phoc
如果要从存储库安装最新版本,请克隆它 并使用setup.py脚本编译和安装库。
python setup.py install您需要一个C++ 11编译器(用GCC 4.9测试)。 如果要使用cuda支持进行编译,还需要安装 CUDA工具包(在8.0、9.0和10.0版中测试)
测试和基准
安装之后,您可以运行测试以确保 工作正常。
python -m prob_phoc.test
对于不同的矩阵,我也有一些比较CPU和CUDA的基准 尺寸和浮子精度。这些要花很长时间才能跑,所以不要等 你的呼吸。
python -m prob_phoc.benchmark