提交 cee696ba 编写于 作者: Z zhupengyang 提交者: cyj1986

fix hash doc (#1330)

* fix hash doc
test=document_preview

* fix
test=document_preview

* fix
test=document_preview

* fix
test=document_preview

* fix hash attr name
test=document_preview
上级 e3d9acf8
......@@ -5,75 +5,50 @@ hash
.. py:function:: paddle.fluid.layers.hash(input, hash_size, num_hash=1, name=None)
将输入 hash 到一个整数,该数的值小于给定的 hash size
该OP将输入 hash 成为一个整数,该数的值小于给定的 ``hash_size`` 。**仅支持输入为LoDTensor**。
我们使用的哈希算法是 xxHash - `Extremely fast hash algorithm <https://github.com/Cyan4973/xxHash/tree/v0.6.5>`_
该OP使用的哈希算法是:xxHash - `Extremely fast hash algorithm <https://github.com/Cyan4973/xxHash/tree/v0.6.5>`_
提供一简单的例子:
.. code-block:: text
给出:
# shape [2, 2]
input.data =
[[1, 2],
[3, 4]]
input.lod = [[0, 2]]
hash_size = 10000
num_hash = 4
然后:
哈希操作将这个二维input的所有数字作为哈希算法每次的输入。
每个输入都将被哈希4次,最终得到一个长度为4的数组。
数组中的每个值的范围从0到9999。
# shape [2, 4]
output.data = [
[[9662, 9217, 1129, 8487],
[8310, 1327, 1654, 4567]],
]
output.lod = [[0, 2]]
参数:
- **input** (Variable) - 输入变量是一个 one-hot 词。输入变量的维数必须是2。支持Tensor与LodTensor
- **hash_size** (int) - 哈希算法的空间大小。输出值将保持在 :math:`[0, hash\_size - 1]` 范围内。
- **num_hash** (int) - 哈希次数,默认为1。
- **name** (str, default None) - 该层的名称
- **input** (Variable) - 输入是一个 **二维** ``LoDTensor`` 。**输入维数必须为2**。数据类型为:int32、int64。**仅支持LoDTensor**
- **hash_size** (int) - 哈希算法的空间大小。输出值将保持在 :math:`[0, hash\_size)` 范围内。
- **num_hash** (int) - 哈希次数。默认值为1。
- **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
返回:哈希的结果变量,与输入变量类型相同。
返回:``LoDTensor``
返回类型: Variable
返回类型:Variable
**代码示例:**
.. code-block:: python
import paddle.fluid as fluid
# titles形为[batch, 1]
titles = fluid.layers.data(name='titles', shape=[1], dtype='int32', lod_level=0)
# hash_r形为[batch, 2]
hash_r = fluid.layers.hash(name='hash_x', input=titles, num_hash=2, hash_size=1000)
# titles形为[batch, 1]并且拥有lod信息
titles = fluid.layers.data(name='titles', shape=[1], dtype='int32', lod_level=1)
# hash_r形为[batch, 2]并且从titles继承lod信息
hash_r = fluid.layers.hash(name='hash_x', input=titles, num_hash=2, hash_size=1000)
import paddle.fluid as fluid
import numpy as np
place = fluid.core.CPUPlace()
# 构建网络
x = fluid.layers.data(name="x", shape=[1], dtype="int32", lod_level=1)
res = fluid.layers.hash(name="res",input=x, hash_size=1000, num_hash=4)
# 创建CPU执行器
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
in1 = np.array([[1,2],[3,4]]).astype("int32")
print(in1)
x_i = fluid.core.LoDTensor()
x_i.set(in1,place)
x_i.set_recursive_sequence_lengths([[0,2]])
res = exe.run(fluid.default_main_program(), feed={'x':x_i}, fetch_list=[res], return_numpy=False)
print(np.array(res[0]))
# [[[722]
# [407]
# [337]
# [395]]
# [[603]
# [590]
# [386]
# [901]]]
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册