keras自學筆記,供以後自己翻閱

1. 數據處理

keras的數據處理都在Keras.preprocessing這個庫裏面,有text、sequence和image三個子庫。

 

文字的預處理叫做標註(Tokenize)

(1)文字拆分。text_to_word_sequence函數,中文的話第三方組件做分詞,例如結巴分詞 pip3 install jieba

(2)建立索引。統一的序號和字詞對應,集合,形成字典。或者用onr_hot來編碼。索引的建立和自己選取的維度會造成哈希碰撞或者稀疏矩陣的問題

(3)序列補齊(Padding)。矩陣的長寬所限,寬度不夠的句子肯定要補齊。還有一種補齊的方式是用類似tcp滑動窗口的形式的形式,主要是針對一定順序的單詞(K)拆分成連續的子串(M),K非常大。一般用pad_sequences函數

(4)轉換爲矩陣。上面序列補齊的pad_sequences就是喲中矩陣化的方式。對於大量的文本用Keras提供的標註類Tokenizer來處理

(5)使用標註類批量處理文本文件。參考(4)

序列數據預處理

對於時間序列和上面的處理方式一致,不論是補齊還是截斷,都是將其相鄰的連續N個元素連在一起,即跟自然語言處理中的N元語法(N-Gram)模型類似,還有一個對序列數據做跳躍語法處理的(SkipGram)模型,代表是著名的word2vec。

圖像數據的處理

Keras.preprocessing.image.ImageDataGenerator類。這個類生成一個數據生成器(Generator)對象,圖像的矩陣數據就那麼個結構

2. Keras模型

分兩類:序列模型(Sequential)和通用模型(Model),他們之間的拓撲結構不同

eg:比如在Keras手冊中就舉了一個教神經網絡看視頻進行自然語言問答的例子。在這個例子中,輸入數據有兩種:一是視頻圖像;二是自然語言的提問。首先通過構造多層卷積神經網絡使用序列模型來對圖像編碼,然後將這個模型放入TimeDistributed函數中建立視頻編碼,最後使用LSTM對編碼建模,同時對自然語言也進行從文字到向量的轉換,在合併兩個網絡以後,將合併的網絡作爲參數輸入下一個全連接層進行計算,並輸出可能的回答。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章