Embedding一下看清楚

2021-10-02 11:15:09 字數 2178 閱讀 2132

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層進行可更新向量編碼。

我盡力了。。。。希望你能看明白,如果沒明白也不要煩躁,再多看看別的教程。

看清楚找到自己的位置

看清楚找到自己的位置 今天下了部電影回來看了,何潤東的 我的美女老闆,故事情節就不說了,其實每個人看待問題都不一樣,我就說我自己的就好了.現在新一代的這些演員都在走自導自演的路子,前幾天看的王力巨集的那個也是,但是這部 寫的確實乙個出身相對比較差的男生的故事,雖然比較難以置信但是可以說是乙個相對比較...

利用Reflector把 閉包 看清楚

今天老趙在園子裡發了一篇文章 警惕匿名方法造成的變數共享 立即引起了大家的廣泛關注 老趙就是園子的 人氣天王 呵呵 而且這個問題園子裡也有其它幾篇文章做了研究 比如 閉包 你不常用的c 之三 action 之怪狀 如果只是停留在c 2.0 3.0的 簡捷且優雅 的 風格上,初學者確實難理解這個 怪 ...

樹言樹語 360 金山 可牛 看清楚後面的敵人

最近360 金山 可牛 遨遊可謂打得一團火,畢竟在這麼大競爭市場裡面,分一塊蛋糕可不是一件容易的事情,當中涉及到利益關係複雜,矛盾不斷公升級,同行裡面究竟誰破壞了規矩,我們簡單做乙個陳述。首先我們出場的角色是遨遊。這是一家做瀏覽器的公司 它的前身是myie 自從推出遨遊瀏覽器以來,受到很多使用者青睞...