Keras方法进行词嵌入
生活随笔
收集整理的這篇文章主要介紹了
Keras方法进行词嵌入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Embedding層實例化
from keras.layers import Embeddingembedding_layer = Embedding(1000, 64)我們將詞嵌入的辦法用于IMDB電影評論情感預測任務學習。對于電影數據集,我們將評論限制為前10000個最常見的單詞,然后將評論限制為只有20個單詞。對于這10000個單詞,網絡對每個單詞都學習一個8維詞嵌入,然后輸入的整數序列(二維整數張量)轉換為嵌入序列(三維浮點數張量),然后將這個張量展平為二維,最后在上面訓練一個Dense層用于分類。
from keras.datasets import imdb from keras import preprocessingmax_features = 10000 # 作為特征的單詞個數maxlen = 20 # 在這么多單詞之后截斷文本(這些單詞屬于前max_features個最常見的單詞)(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features) # 將數據加載為整數列表x_train = preprocessing.sequence.pad_sequences(x_train, maxlen=maxlen) #將整數列表轉換為形狀為(samples, maxlen)的二維整數張量 x_test = preprocessing.sequence.pad_sequences(x_test, maxlen=maxlen)在IMDB數據集上使用Embedding層和分類器
from keras.models import Sequential from keras.layers import Flatten, Densemodel = Sequential()model.add(Embedding(10000, 8, input_length=maxlen)) #指定Embedding層的最大輸入長度,以便后面將嵌入輸入展平,Embedding層激活形狀為(samples, maxlen, 8)model.add(Flatten()) #將三維的嵌入張量展平成形狀為(samples, maxlen*8)# We add the classifier on top model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc']) model.summary()history = model.fit(x_train, y_train,epochs=10,batch_size=32,validation_split=0.2) _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= embedding_2 (Embedding) (None, 20, 8) 80000 _________________________________________________________________ flatten_1 (Flatten) (None, 160) 0 _________________________________________________________________ dense_1 (Dense) (None, 1) 161 ================================================================= Total params: 80,161 Trainable params: 80,161 Non-trainable params: 0 _________________________________________________________________ Train on 20000 samples, validate on 5000 samples最后得到精度是76%,考慮到僅看每條評論的前20個單詞,這個結果還是相當不錯的。但請注意,僅僅將嵌入序列展開并在上面訓練一個Dense層,會導致模型對輸入序列中的每個單詞單獨處理,而沒有考慮單詞之間關系句子結構。更好的做法是在嵌入序列中添加循環層和一維卷積層,將每個序列作為整體來學習特征。
更多精彩內容,歡迎關注我的微信公眾號:數據瞎分析
總結
以上是生活随笔為你收集整理的Keras方法进行词嵌入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现对文本的简单one-hot编码
- 下一篇: Keras函数式API