首页 > 编程知识 正文

空间向量余弦值的公式,两空间向量的余弦值公式

时间:2023-05-06 14:31:22 阅读:278276 作者:2649

keras求两向量间的余弦值

具体要自己定义一个layer,余弦相似度计算公式如下:
步骤:

计算两个向量L2范数,计算两个向量的点乘点乘结果除以L2范数乘积,分母不能为0

import keras.backend as Kfrom keras.layers import Lambdaimport numpy as npimport kerasclass CosineLayer(): def __call__(self, x1, x2): def _cosine(x): dot1 = K.batch_dot(x[0], x[1], axes=1) dot2 = K.batch_dot(x[0], x[0], axes=1) dot3 = K.batch_dot(x[1], x[1], axes=1) max_ = K.maximum(K.sqrt(dot2 * dot3), K.epsilon()) return dot1 / max_ output_shape = (1,) value = Lambda( _cosine, output_shape=output_shape)([x1, x2]) return value# x1,x2:(batch_size, dim)x1 = np.random.randint(1, 100, 20)# x2 = np.random.randint(1, 100, 20)x2 = np.random.randint(1, 100, 20)# 一定要是二维x1 = x1.reshape(4, 5)x2 = x2.reshape(4, 5)x1 = K.constant(x1)x2 = K.constant(x2)# 转化为keras里的tensorx = Lambda(lambda x:x)(x1)y = Lambda(lambda x:x)(x2)cosine = CosineLayer()similarity = cosine(x, y)# tensor输出查看不到具体值print(similarity)# model = CosineLayer(x,y)

参考: 使用Keras计算余弦相似度(Cosine Similarity)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。