ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Embedding一下看清楚

2020-01-31 18:03:05  阅读:285  来源: 互联网

标签:编码 embedding 一下 矩阵 看清楚 Embedding 100 向量 255


原因就是你没找到合适的教程。如果这篇你看不明白,关了,下一篇。

embedding层有什么用
首先,embedding是为了处理文字的理解。让机器能够理解一句话的意思: 灰白灰会挥发。一句话,6个字。

但是只有五种 白,灰,会,挥,发。

编码
我们需要将汉字表达成网络认识的数字,比如我用整数表达。

白:2

灰:1

会:3

挥:4

发:5

句子就可以写成121345。

我用3维的01向量也能表达
白:(000)

灰:(001)

会:(010)

挥:(100)

发:(111)

成吧?相应的这句话就是(001)(000)(001)(010)(100)(111)就能表示灰白灰会挥发了。就是比起121345的表示方法长了好些。

我再费劲点,我用one hot编码方式
白:(10000)

灰:(01000)

会:(00100)

挥:(00010)

发:(00001)

也可以吧?

那么看来,我有很多种能够对字编码的方式。那我能不能找到一种最有优势的。比方说,如果我能用一个向量来表示这个字,这个向量能够表达这个字的特点。比如(255,255,255)这是白色的rgb颜色码,(100,100,100)是灰色的rgb颜色码。那么如果我的向量这样表达——白:(255,255,255,0,0) 灰:(100,100,100,0,0)诶,这个向量他有灵性,棒棒的哈,那如果我能把编码与字的属性合一,那么想当然,会给我的网络带来很多便利。

不过我肯定不能人工去编码,那么我选择整一个编码矩阵,交给网络更新成不?

网络更新编码


白:(11,22,33,44,55)

灰:(5,8,2,1,4)

会:(6,6,6,6,6)

挥:(8,8,8,8,8)

发:(0,0,0,0,0)

我让其他层的网络将每个字更新成这种有语义的可不可以:

白:(255,255,255,0,0)

灰:(100,100,100,0,0)

其他字省略了

针对以上需求我们。。
当然这个更新过程与我们的embedding层无关,后面的网络会负责更新。embedding只是让把句子转换成初始编码矩阵。

1.我们需要用将这句话转换成向量

2.我们需要一个初始的可以更新的特征编码矩阵。

就说我们这个句子:灰白灰会挥发,有5种字,一共长度6,那我想把每个字编码成维度5的’灵性‘’向量(白:(255,255,255,0,0) )怎么整呢。

keras.layers.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=False, input_length=None)
input_dim: 词汇表大小,对应我们的例子就是5

output_dim:输出维度,对应我们的例子还是5,不过这回说的就是:白:(255,255,255,0,0)这个了。

input_length:输入的句子长度,对应我们的例子,6.

通常就需要给出这三个参数,embedding层就能自动的暗搓搓给你生成一个编码矩阵,一个字对应矩阵的一行。更新矩阵,你的字的想两步就被更新了吗。第一行向量长什么样,你的字不就被编码成什么样吗,所以啊,你的输入长什么样其实全权由这个矩阵决定了。

不对啊,还有一个问题,网络的输入都得是向量,一开始的输入他就不认字啊,怎么转换啊?

很简单。你自己也暗搓搓的把‘’灰白灰会挥发‘’转化成(1, 2, 1, 3, 4, 5)给网络就好。

那么官方这句:将正整数(索引值)转换为固定尺寸的稠密向量。 例如: [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]

你也明白什么意思了吧。通常都会先将文字转换成普通整数编码,然后再用embedding层进行可更新向量编码。

我尽力了。。。。希望你能看明白,如果没明白也不要烦躁,再多看看别的教程。

NLP蜗牛 发布了34 篇原创文章 · 获赞 3 · 访问量 5825 私信 关注

标签:编码,embedding,一下,矩阵,看清楚,Embedding,100,向量,255
来源: https://blog.csdn.net/weixin_41845265/article/details/104125984

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有