hash

  • paddle.fluid.layers.hash(input, hash_size, num_hash=1, name=None)[源代码]

该OP将输入 hash 成为一个整数,该数的值小于给定的 hash_size仅支持输入为LoDTensor

该OP使用的哈希算法是:xxHash - Extremely fast hash algorithm

  • 参数:
    • input (Variable) - 输入是一个 二维 LoDTensor 。输入维数必须为2。数据类型为:int32、int64。仅支持LoDTensor。
    • hash_size (int) - 哈希算法的空间大小。输出值将保持在 hash - 图1 范围内。
    • num_hash (int) - 哈希次数。默认值为1。
    • name (str,可选) – 具体用法请参见 Name ,一般无需设置,默认值为None。

返回:LoDTensor

返回类型:Variable

代码示例:

  1. import paddle.fluid as fluid
  2. import numpy as np
  3.  
  4. place = fluid.core.CPUPlace()
  5.  
  6. # 构建网络
  7. x = fluid.layers.data(name="x", shape=[1], dtype="int32", lod_level=1)
  8. res = fluid.layers.hash(name="res",input=x, hash_size=1000, num_hash=4)
  9.  
  10. # 创建CPU执行器
  11. exe = fluid.Executor(place)
  12. exe.run(fluid.default_startup_program())
  13.  
  14. in1 = np.array([[1,2],[3,4]]).astype("int32")
  15. print(in1)
  16. x_i = fluid.core.LoDTensor()
  17. x_i.set(in1,place)
  18. x_i.set_recursive_sequence_lengths([[0,2]])
  19. res = exe.run(fluid.default_main_program(), feed={'x':x_i}, fetch_list=[res], return_numpy=False)
  20. print(np.array(res[0]))
  21. # [[[722]
  22. # [407]
  23. # [337]
  24. # [395]]
  25. # [[603]
  26. # [590]
  27. # [386]
  28. # [901]]]