嵌入查找(Embedded Lookup)

简介: 嵌入查找(Embedded Lookup)是一种机器学习技术,它通过将输入数据映射到低维空间,然后在该空间中进行查找。这种技术可以提高搜索和匹配的速度,尤其是在大规模数据集上

嵌入查找(Embedded Lookup)是一种机器学习技术,它通过将输入数据映射到低维空间,然后在该空间中进行查找。这种技术可以提高搜索和匹配的速度,尤其是在大规模数据集上。嵌入查找通常用于以下场景:

  1. 词向量:将文本转换为数值向量,然后在词向量空间中进行查找。这可以用于词义消歧、词性标注等自然语言处理任务。
  2. 图像特征:将图像的局部特征映射到低维空间,然后在该空间中进行查找。这可以用于图像检索、目标检测等计算机视觉任务。
  3. 语音特征:将语音信号转换为数值向量,然后在该空间中进行查找。这可以用于语音识别、说话人识别等语音处理任务。
    要使用嵌入查找,需要进行以下步骤:
  4. 数据预处理:对输入数据进行预处理,例如文本数据需要进行分词、去停用词等操作,图像数据需要进行归一化等操作。
  5. 嵌入学习:使用深度学习模型(如词向量模型、卷积神经网络等)将输入数据映射到低维空间。这可以是一个连续的数值空间,也可以是一个离散的编码空间。
  6. 索引构建:在低维空间中构建索引,以便快速查找。这可以通过 k-d 树、FLANN(快速最近邻搜索)等方法实现。
  7. 嵌入查找:利用构建的索引,在低维空间中查找与给定查询数据最接近的数据。
    总之,嵌入查找是一种将输入数据映射到低维空间,并在该空间中进行查找的机器学习技术。它广泛应用于自然语言处理、计算机视觉和语音处理等领域。通过数据预处理、嵌入学习、索引构建和嵌入查找等步骤,可以实现高效、快速的搜索和匹配。

Ch 11: Concept 02
Embedding Lookup
Import TensorFlow, and begin an interactive session

import tensorflow as tf
sess = tf.InteractiveSession()
Let's say we only have 4 words in our vocabulary: "the", "fight", "wind", and "like".

Maybe each word is associated with numbers.

Word    Number
'the'    17
'fight'    22
'wind'    35
'like'    51
embeddings_0d = tf.constant([17,22,35,51])
Or maybe, they're associated with one-hot vectors.

Word    Vector
'the '    [1, 0, 0, 0]
'fight'    [0, 1, 0, 0]
'wind'    [0, 0, 1, 0]
'like'    [0, 0, 0, 1]
embeddings_4d = tf.constant([[1, 0, 0, 0],
                             [0, 1, 0, 0],
                             [0, 0, 1, 0],
                             [0, 0, 0, 1]])
This may sound over the top, but you can have any tensor you want, not just numbers or vectors.

Word    Tensor
'the '    [[1, 0] , [0, 0]]
'fight'    [[0, 1] , [0, 0]]
'wind'    [[0, 0] , [1, 0]]
'like'    [[0, 0] , [0, 1]]
embeddings_2x2d = tf.constant([[[1, 0], [0, 0]],
                               [[0, 1], [0, 0]],
                               [[0, 0], [1, 0]],
                               [[0, 0], [0, 1]]])
Let's say we want to find the embeddings for the sentence, "fight the wind".

ids = tf.constant([1, 0, 2])
We can use the embedding_lookup function provided by TensorFlow:

lookup_0d = sess.run(tf.nn.embedding_lookup(embeddings_0d, ids))
print(lookup_0d)
[22 17 35]
lookup_4d = sess.run(tf.nn.embedding_lookup(embeddings_4d, ids))
print(lookup_4d)
[[0 1 0 0]
 [1 0 0 0]
 [0 0 1 0]]
lookup_2x2d = sess.run(tf.nn.embedding_lookup(embeddings_2x2d, ids))
print(lookup_2x2d)
[[[0 1]
  [0 0]]

 [[1 0]
  [0 0]]

 [[0 0]
  [1 0]]]
目录
相关文章
|
开发框架 JavaScript 前端开发
vue首次加载白屏问题
vue首次加载白屏问题
441 0
|
Shell
在Bash中检查变量是否为空的几种方法
在Bash中检查变量是否为空的几种方法
1934 0
在Bash中检查变量是否为空的几种方法
|
Linux iOS开发 MacOS
brew - mac 下的 brew 切换为国内源
brew - mac 下的 brew 切换为国内源
5456 0
|
XML Oracle 关系型数据库
GeoTools之入门简介
GeoTools是一套开源的用java言语开发的GIS开发工具包,可以基于GeoTools开发符合标准的地理信息系统。GeoTools 提供了 OGC(Open Geospatial Consortium)规范的一个实现来作为他们的开发。
2295 0
GeoTools之入门简介
|
Dubbo Java 测试技术
分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较
Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。不过,略有遗憾的是,据说在淘宝内部,dubbo由于跟淘宝另一个类似的框架HSF(非开源)有竞争关系,导致dubbo团队已经解散(参见http://www.oschina.net/news/55059/druid-1-0-9 中的评论),反到是当当网的扩展版本仍在持续发展,墙内开花墙外香。
8417 0
|
固态存储 NoSQL Go
使用 cProfile 和火焰图调优 Python 程序性能(下)
使用 cProfile 和火焰图调优 Python 程序性能
573 0
|
运维 搜索推荐 调度
Ha3搜索引擎简介
Ha3是阿里巴巴搜索团队开发的搜索引擎平台,它为阿里集团包括淘宝、天猫在内的核心业务提供搜索服务支持。
25678 1
|
机器学习/深度学习 自然语言处理 算法
|
机器学习/深度学习 编解码 数据可视化
UNet 和 UNet++:医学影像经典分割网络对比
UNet 和 UNet++:医学影像经典分割网络对比
2175 0
UE4/5 使用Sequence录制功能,实现自定义蓝图逻辑的运行
UE4/5 使用Sequence录制功能,实现自定义蓝图逻辑的运行
1056 0
UE4/5 使用Sequence录制功能,实现自定义蓝图逻辑的运行