keras求两向量间的余弦值

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

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

import keras.backend as K
from keras.layers import Lambda
import numpy as np
import keras
class 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里的tensor
x = 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)

keras求两向量间的余弦值相关推荐

  1. matlab求两向量夹角_高中数学《平面向量的数量积》说课稿

    高中数学<平面向量的数量积>说课稿 作为一位无私奉献的人民教师,有必要进行细致的说课稿准备工作,借助说课稿可以让教学工作更科学化.那么写说课稿需要注意哪些问题呢?以下是小编为大家收集的高中 ...

  2. matlab求两向量夹角_初学讲义之高中数学十四:向量的数量积

    上篇讲了向量的基本概念和简单的加减运算,这部分的数学运算与几何图形变换之间的联系是非常直观的,理解起来非常容易 本篇讲的内容在数学运算与几何图形变换之间的联系不那么直观,需要花功夫反复琢磨运算的数学意 ...

  3. C语言求两个数的较大值

    编程题目: 写一个函数求两个数的较大值 求解过程: 先写代码,再写它的函数形式,函数的特点就是简化代码,代码复用.因为是简单代码,就默认这两个数是整型,用int.从键盘输入两个数,通过代码判断大小输出 ...

  4. 如何用C语言求两个数的较大值

    用C语言求两个数的较大值,有两种方法: 1,常规方法,利用选择语句的 if 语句 #include<stdio.h> int main() {int a=10;int b=20;if (a ...

  5. OpenGL(C++):求两向量角平分线

    前提条件:两向量起点在同一个点 设两向量分别为OA⃗\vec{OA}OA和OB⃗\vec{OB}OB,起点均在OOO点. 主要思想: 将OA⃗\vec{OA}OA和OB⃗\vec{OB}OB单位化,假 ...

  6. matlab求两向量夹角_高考数学解题技巧:专题21 平面向量中最值、范围问题高中数学黄金解题模板...

    ↑ 点击上方"红色笔记"关注我们 高中各科解题技巧下载  回复数字:800009 高考数学解题技巧:专题24 数列求和方法高中数学黄金解题模板 高考数学解题技巧:专题26 含参不等 ...

  7. 余弦相似度:通过计算两个向量的夹角余弦值来评估他们的相似度

    余弦值的范围在[-1,1]之间,值越趋近于1,代表两个向量的方向越接近: 越趋近于-1,他们的方向越相反: 接近于0,表示两个向量近乎于正交. float comparator(const float ...

  8. 求两向量在0~360度之间的角度值及实际应用

    问题 先从实际问题出发,这样可以更好的理解问题. 项目需要控制角色在地图中随意移动,角色素材是8方向的. 那问题就是 如何根据点击的鼠标位置来决定使用哪个方向的图集? 分解问题 首先8方向图集 360 ...

  9. 向量余弦值python_向量/矩阵的余弦值打印(元素明智的操作) 使用Python的线性代数

    向量余弦值python Prerequisite: 先决条件: Defining a Vector 定义向量 Defining a Matrix 定义矩阵 Numpy is the library o ...

  10. php求两个数组的差值,数组计算差值及项的小计,该如何处理

    数组计算差值及项的小计 本帖最后由 lazygc520 于 2014-04-14 16:19:41 编辑 $s = array ( 0 => array ( 0 => array ( 0  ...

最新文章

  1. java开源springboot项目_springBoot 搭建web项目(前后端分离,附项目源代码地址)...
  2. mysql启动错误1067进程意外终止的解决方法
  3. 在 BT5 下对 Red Hat Enterprise Linux 5.4 的一次***测试
  4. sr锁存器 数电_随机存取存储器 RAM || SRAM || DRAM || 数电
  5. Java并发与锁设计实现详述 - Java中的Condition
  6. linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
  7. Factors of Factorial(AtCoder-2286)
  8. 数据解析1:XML解析(1)
  9. Mondrian xml服务mysql_mondrian与java工程的集成
  10. json字符串中的大括号转义传到后台_string.format格式化字符串中转义大括号“{}”...
  11. 2021武汉理工大学计算机考研初试经验总结
  12. 大学计算机课程教学建议,计算机应用基础课程教学的建议
  13. 机器学习-单层感知器不能实现异或运算的原因
  14. 谁是最大的竞争对手互联网宝宝军团?
  15. 网页实现从数据库读取数据并简单分页
  16. 城市太美、生活步调太悠闲
  17. 服务器系统可以备份,服务器操作系统可以备份吗
  18. Python数据类型—数值型
  19. 访问windows azure虚拟机iis服务器,Azure使用文件共享从IIS虚拟机共享照片?
  20. JS创建对象模式7种方法详解

热门文章

  1. 详解MPO/MTP主干光纤跳线规格参数、MPO连接说明、MPO极性分类
  2. usr目录linux,linux之usr目录的概述
  3. 如何给拍好的短视频配音?最简单的方法推荐!
  4. 日系插画学习笔记(十):色彩基础
  5. 储存卡格式化怎么恢复?给力的操作!
  6. 傻瓜式教学——手把手教你电脑三种方式连接打印机
  7. 移动端 touch 手机拖动 css停止问题
  8. RC电路 波形分析
  9. Android虚拟机的安装
  10. 1.DingoApi安装和配置