embedding的size是如何確定?

時間 2021-05-11 15:38:21

1樓:

一般取```embedding_dim = vocabulary_list_length ** 0.25```

一般取```embedding_dim = 2 ** int(np.log2(vocabulary_list_length ** 0.25) + 1)```

到```embedding_dim = 2 ** int(np.log2(vocabulary_list_length ** 0.25) + 2)```之間

2樓:

問題是我提的。

其實是兩個問題,感謝 @嚴林 回答了第1個問題,第2個問題是word出現次數和embedding size大小是否有關係,這個我來回答吧。

直覺上會認為,如果word出現次數太少,會導致embedding得到較少的訓練,怎麼能夠訓練出較大size的embedding呢。

我們從embedding的訓練來看一看,a是第乙個隱層某個節點的輸出,emb_i表示embedding中第i個維度的數值

對embedding做反向傳播,固定權重,得到導數如下

從求導公式可以看到,embedding中每個維度數值的訓練跟權重相關,而跟embedding中其他維度的數值無關。

在整個模型的訓練中,我們假設權重是經過充分訓練的,那些出現次數較多的word對權重影響較大,而那些出現次數很少的word對權重的影響較小。

因此,出現次數較少的word,對於不同embedding的size大小而言,效果是一樣的。

3樓:韓濤

不是2的指數形式,然後根據自己的模型來構建的嗎?我之前做過類似的實驗,128/256這兩個對模型的影響不是很大,64/32對模型的影響會有差別。

4樓:

調出來的。和word出現的次數沒關係,和cardinality有關係。一般來說,越大的embedding size不會傷害模型本身的效能,但是對於記憶體和計算量來說是非常不合算的。

所以就試一下常用的一些size,選乙個metric好的而且比較小的就行。

5樓:

embedding的size我一般採用個經驗值,假如embedding對應的原始feature的取值數量為 ,那麼我一般會採用 或者 來做初始的size,然後2倍擴大或縮小,實驗幾次,一般就能得到乙個相對較好的值。另外,embedding的初始化也是非常重要的,需要精細調參。

keras中embedding層是如何將乙個正整數(下標)轉化為具有固定大小的向量的?

這個問題我曾經研究過很久很久,其實很簡單 keras的embedding使用的是end to end的方法進行訓練獲得的,通俗的講就是根據bp演算法算出來的 首先你可以初始化乙個矩陣來表達全部詞的向量然後用bp演算法來更新這個初始化的向量,更新的目標就是使得代價函式最小化 其實就是學習權重 embe...

C 中,new TYPE SIZE 中,SIZE的最大值由什麼決定?如何計算?

向陽 32位程式最多是2GB 呼叫OS的記憶體分配API的情況下 正常情況1GB就沒了,這裡的2G 1G都是整個程式占用的記憶體大小。這是我自己電腦上的情況。所以我懷疑別處分配的記憶體加上這幾百萬 32就超過限制了,換x64 Release看看如何 尺寸當然是sizeof TYPE SIZE,實際會...

男生會很Care自己的size嗎?

當然會care 山東人,以前去澡堂都很害羞,一直扭扭捏捏的,現在知道自己算大的以後特別愛去澡堂,敞開了甩,就是讓別人知道我有個大貨 絕不錦衣夜行 會 上大學以前個個18厘公尺,後來到北京上大學大澡堂洗澡,發現自己的長度可以,15,算是粗的,小雞蛋粗吧。開始覺得自己估計會不行,實驗過後發現乙個小時 會...