优化散布操作的pytorch扩展库

flexi-hash-embedding的Python项目详细描述


灵活散列嵌入

这个PyTorch模块对 将功能嵌入到单个固定大小的嵌入中。 特性键是散列的,它 是流媒体环境和在线学习的理想选择 这样我们就不必记住 特征键和索引之间的映射。 多个可变长度特征按示例分组 然后总结特征嵌入按其 值,启用线性功能而不仅仅是一个 特征。

使用美妙的torch scatter library和sklearn的特性散列在引擎盖下。

例如:

>>>fromflexi_hash_embeddingimportFlexiHashEmbedding>>>X=[{'dog':1,'cat':2,'elephant':4},{'dog':2,'run':5}]>>>embed=FlexiHashEmbedding(dim=5)>>>embed(X)tensor([[1.0753,-5.3999,2.6890,2.4224,-2.8352],[2.9265,5.1440,-4.1737,-12.3070,-8.2725]],grad_fn=<ScatterAddBackward>)

示例

通常,我们会有单个事件或用户的数据 例如,在json blob格式中 可能丢失、不完整或从未见过的特征。 此外,可能定义了数量可变的特征。 这个用例非常适合于特性散列和groupby求和。 特征嵌入

在这个例子中,我们在整个数据集中总共有六个特性, 但是我们计算三个向量,每个输入行一个:

img

在上面的例子中,我们一共有六个特性,但是 分布在三个客户身上第一个客户端有三个活动的 功能,第二个客户端两个功能 (并且只有一个特性与第一个客户机重叠) 第三个客户端有一个活动的特性。 Flexi Hash Embeddings返回三个向量,每个客户机一个, 即使有六个特征,也不是六个向量。 第一个客户的向量是三个特征向量的和 (加国旗、年龄、豪华国旗) 而第二个客户的向量只是两个特征向量的和 (lppish,豪华旗子) 第三个客户的向量只是一个单一的特征。

速度

在线功能hasing和groupby相对较快。 对于大批量4096,平均每行5个功能 等于20000个功能。这个模块将散列许多特性 在现代MacBook Pro上大约20毫秒。

安装

从pypi dopip install flexi-hash-embedding

安装

通过执行git@github.com:cemoody/flexi_hash_embedding.git在本地安装。

测试

>>> pip install -e .
>>> py.test

要发布新的包版本,请执行以下操作:

python3 setup.py sdist bdist_wheel
twine upload dist/*
pip install --index-url https://pypi.org/simple/ --no-deps flexi_hash_embedding

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是用来加速集合中对象查找的哈希代码吗?   java在Servlet中执行后将JSP请求重定向到自身   JavaHTTPStatus415使用Ajax将Json数据发布到SpringMVC4也使用了SpringSecurity   java为什么谷歌应用引擎MySQL JDBC URL不与数据库连接?   多线程Java:强制停止ExecutorService线程   java使用For循环向组合框添加值   java子Git“内存不足”和“超出GC开销限制”   使用正则表达式运行计算器程序时出现java NumberFormatException   java MockMvc测试POST请求返回错误:实际调用有不同的参数:   java自动在虚拟机内移动鼠标,与真实的鼠标无关   当类位于类路径上时,java Surefire抛出SurefireReflectionException   java GroupLayout错误:找不到错误的行   SpringHibernateJava。lang.NoSuchFieldError:实例   从一个java密钥库生成多个个人证书的身份验证   java 1.6.013中的eclipse@WebServlet注释支持   java Spring Webservicetemplate连接重置错误   spring如何修复SqlRowSet上的“无效游标SQL异常”。Java中的Next()   java Websphere版本迁移