tf.nn.embedding_lookup函数以及对嵌入表示的理解

本文介绍了如何使用嵌入表示解决大量类别one-hot编码导致的参数过多问题,并探讨了嵌入向量能表示类别间相似度的概念。通过示例解释了tf.nn.embedding_lookup函数的使用,该函数用于高效获取类别对应的嵌入向量,避免了不必要的计算。
摘要由CSDN通过智能技术生成

假设有一组分类,总共有5个类别,我们对所有类别进行哑编码(one-hot),则编码后[1,0,0,0,0]为类别1,[0,1,0,0,0]为类别2,[0,0,1,0,0]为类别3,[0,0,0,1,0]为类别4,[0,0,0,0,1]为类别5.若类别过多,该如何处理?我们用one-hot表示,就有可能使得训练参数过于庞大,而且不能表示不同类别之间的相似度,于是我们想到了嵌入(Embeding)方式,即用一组更短的向量表示原类别

看图说话:
查询过程
类别表示向量从5维的one-hot变成了一个三维的向量,而且这个向量是可以计算类别之间的距离的,通过计算距离,我们就可以判断哪两个类别更为相似,比如苹果、香蕉这两个类别的相似度就应该比苹果、汽车两个类别的相似度高,此时我们应该可以得到苹果、香蕉这两个类别向量的距离更近,从而解决了类别过多时训练参数过多的问题,也解决了类别相似度表示的问题
:向量矩阵是我们提前预训练出来的,与其他权重矩阵一样

tf.nn.embedding_lookup函数如下

tf.nn.embedding_lookup(
    params,
    ids,
    partition_strategy='mod',
    name=None,
    validate_indices=True,
    max_norm=None
)
Args(函数参数):
    params:代表完整的嵌入张量的简单张量,即上面所讲向量矩阵
    ids: 要查找的id编号列表,eg:[0,2],即指要查找类别1、类别3在向量矩阵中的表示向量(下标从0开始)
    partition_strategy:切分策略,在 len(pa
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值