cos_sim 官方文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/cos_sim_cn.html
dot 官方文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/dot_cn.html
dist 官方文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/dist_cn.html
cos_sim 计算两个向量的余弦。
dot 计算两个向量的内积。
dist 计算两个矩阵之间的距离。
cos_sim 示例:
import paddle.fluid as fluid
import numpy as np
x = fluid.data(name='x', shape=[3, 7], dtype='float32')
y = fluid.data(name='y', shape=[1, 7], dtype='float32')
out = fluid.layers.cos_sim(x, y)
place = fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
np_x = np.random.random(size=(3, 7)).astype('float32')
np_y = np.random.random(size=(1, 7)).astype('float32')
output = exe.run(feed={"x": np_x, "y": np_y}, fetch_list = [out])
print(output)
结果:
[array([[0.87142015],
[0.7826345 ],
[0.88534766]], dtype=float32)]
dot 示例:
import paddle
import paddle.fluid as fluid
import numpy as np
with fluid.dygraph.guard():
x = fluid.dygraph.to_variable(np.random.uniform(0.1, 1, [10]).astype(np.float32))
y = fluid.dygraph.to_variable(np.random.uniform(1, 3, [10]).astype(np.float32))
z = fluid.layers.dot(x, y)
print(x.numpy())
print(y.numpy())
print(z.numpy())
结果:
[0.23269959 0.468843 0.6351422 0.47057495 0.11478688 0.31793362
0.4687848 0.2103034 0.46470684 0.6318518 ]
[2.6248667 1.5989798 1.2326385 2.1651013 2.523104 1.115678 2.720436
2.923536 2.7323349 2.0036182]
[8.232403]
dist 示例:
import paddle
import paddle.fluid as fluid
import numpy as np
with fluid.dygraph.guard():
x = fluid.dygraph.to_variable(np.array([[3, 3],[3, 3], [2, 2], [3, 0]]).astype(np.float32))
y = fluid.dygraph.to_variable(np.array([[3, 3],[3, 1]]).astype(np.float32))
print("x numpy data: \n", x.numpy())
print()
print("y numpy data: \n", y.numpy())
print()
out = fluid.layers.dist(x, y, 0) # 广播后的 y = [[3, 3], [3, 1], [3, 3], [3, 1]]
print(out.numpy()) # out = [1.]
out = fluid.layers.dist(x, y, 2)
print(out.numpy()) # out = [2.]
out = fluid.layers.dist(x, y, float("inf"))
print(out.numpy()) # out = [2.]
out = fluid.layers.dist(x, y, float("-inf"))
print(out.numpy()) # out = [0.]
结果:
x numpy data:
[[3. 3.]
[3. 3.]
[2. 2.]
[3. 0.]]
y numpy data:
[[3. 3.]
[3. 1.]]
[4.]
[2.6457512]
[2.]
[0.]