keras中文文檔

2021-02-13 CreateAMind
Keras:基於Theano和TensorFlow的深度學習庫

詳細的中文文檔,目錄如下:

以下內容摘自keras中文文檔

這就是Keras

Keras是一個極簡和高度模塊化的神經網絡庫,Keras由純Python編寫而成並基於Theano或Tensorflow。Keras 為支持快速實驗而生,如果你有如下需求,請選擇Keras:

Keras適用的Python版本是:Python 2.7-3.5

Keras的設計原則是

模塊性:模型可理解為一個獨立的序列或圖,完全可配置的模塊以最少的代價自由組合在一起。具體而言,網絡層、損失函數、優化器、初始化策略、激活函數、正則化方法都是獨立的模塊,你可以使用它們來構建自己的模型。

極簡主義:每個模塊都應該儘量的簡潔。每一段代碼都應該在初次閱讀時都顯得直觀易懂。沒有黑魔法,因為它將給迭代和創新帶來麻煩。

易擴展性:添加新模塊超級簡單的容易,只需要仿照現有的模塊編寫新的類或函數即可。創建新模塊的便利性使得Keras更適合於先進的研究工作。

與Python協作:Keras沒有單獨的模型配置文件類型(作為對比,caffe有),模型由python代碼描述,使其更緊湊和更易debug,並提供了擴展的便利性。

Keras從2015年3月開始啟動,經過一年多的開發,目前Keras進入了1.0的時代。Keras 1.0依然遵循相同的設計原則,但與之前的版本相比有很大的不同。如果你曾經使用過此前的其他版本Keras。你或許會關心1.0的新特性。

泛型模型:簡單和強大的新模塊,用於支持複雜深度學習模型的搭建。

更優秀的性能:現在,Keras模型的編譯時間得到縮短。所有的RNN現在都可以用兩種方式實現,以供用戶在不同配置任務和配置環境下取得最大性能。現在,基於Theano的RNN也可以被展開,以獲得大概25%的加速計算。

測量指標:現在,你可以提供一系列的測量指標來在Keras的任何監測點觀察模型性能。

更優的用戶體驗:我們面向使用者重新編寫了代碼,使得函數API更簡單易記,同時提供更有效的出錯信息。

新版本的Keras提供了Lambda層,以實現一些簡單的計算任務。

...

如果你已經基於Keras0.3編寫了自己的層,那麼在升級後,你需要為自己的代碼做以下調整,以在Keras1.0上繼續運行。請參考編寫自己的層

關於Keras-cn

本文檔是Keras文檔的中文版,包括keras.io的全部內容,以及更多的例子、解釋和建議,目前,文檔的計劃是:

1.x版本:現有keras.io文檔的中文翻譯,保持與官方文檔的同步

2.x版本:完善所有【Tips】模塊,澄清深度學習中的相關概念和Keras模塊的使用方法

3.x版本:增加Keras相關模塊的實現原理和部分細節,幫助用戶更準確的把握Keras,並添加更多的示例代碼

現在,keras-cn的版本號將簡單的跟隨最新的keras release版本

本文檔的額外模塊還有:

一些基本概念:位於快速開始模塊的一些基本概念簡單介紹了使用Keras前需要知道的一些小知識,新手在使用前應該先閱讀本部分的文檔。

Keras安裝和配置指南,提供了詳細的Linux和Windows下Keras的安裝和配置步驟。

深度學習與Keras:位於導航欄最下方的該模塊翻譯了來自Keras作者博客keras.io和其他Keras相關博客的文章,該欄目的文章提供了對深度學習的理解和大量使用Keras的例子,您也可以向這個欄目投稿。 所有的文章均在醒目位置標誌標明來源與作者,本文檔對該欄目文章的原文不具有任何處置權。如您仍覺不妥,請聯繫本人(moyan_work@foxmail.com)刪除。

快速開始:30s上手Keras

Keras的核心數據結構是「模型」,模型是一種組織網絡層的方式。Keras中主要的模型是Sequential模型,Sequential是一系列網絡層按順序構成的棧。你也可以查看泛型模型來學習建立更複雜的模型

Sequential模型如下

from keras.models import Sequentialmodel = Sequential()

將一些網絡層通過.add()堆疊起來,就構成了一個模型:

from keras.layers import Dense, Activationmodel.add(Dense(output_dim=64, input_dim=100))model.add(Activation("relu"))model.add(Dense(output_dim=10))model.add(Activation("softmax"))

完成模型的搭建後,我們需要使用.compile()方法來編譯模型:

model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])

編譯模型時必須指明損失函數和優化器,如果你需要的話,也可以自己定製損失函數。Keras的一個核心理念就是簡明易用同時,保證用戶對Keras的絕對控制力度,用戶可以根據自己的需要定製自己的模型、網絡層,甚至修改原始碼。

from keras.optimizers import SGDmodel.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True))

完成模型編譯後,我們在訓練數據上按batch進行一定次數的迭代訓練,以擬合網絡,關於為什麼要使用『batch』,請參考一些基本概念

model.fit(X_train, Y_train, nb_epoch=5, batch_size=32)

當然,我們也可以手動將一個個batch的數據送入網絡中訓練,這時候需要使用:

model.train_on_batch(X_batch, Y_batch)

隨後,我們可以使用一行代碼對我們的模型進行評估,看看模型的指標是否滿足我們的要求:

loss_and_metrics = model.evaluate(X_test, Y_test, batch_size=32)

或者,我們可以使用我們的模型,對新的數據進行預測:

classes = model.predict_classes(X_test, batch_size=32)proba = model.predict_proba(X_test, batch_size=32)

搭建一個問答系統、圖像分類模型,或神經圖靈機、word2vec詞嵌入器就是這麼快。支撐深度學習的基本想法本就是簡單的,現在讓我們把它的實現也變的簡單起來!

為了更深入的了解Keras,我們建議你查看一下下面的兩個tutorial

還有我們對一些概念的解釋

在Keras代碼包的examples文件夾裡,我們提供了一些更高級的模型:基於記憶網絡的問答系統、基於LSTM的文本的文本生成等。

安裝

Keras使用了下面的依賴包:

當使用Theano作為後端時:

當使用TensorFlow為後端時:

【Tips】「後端」翻譯自backend,指的是Keras依賴於完成底層的張量運算的軟體包。【@Bigmoyan】

安裝Keras時,請cd到Keras的文件夾中,並運行下面的安裝命令:

sudo python setup.py install

你也可以使用PyPI來安裝Keras

sudo pip install keras

對於在Windows上使用Keras的同學,請移步 Keras安裝和配置指南

在Theano和TensorFlow間切換

Keras默認使用Theano作為後端來進行張量操作,如需切換到TensorFlow,請查看這裡

技術支持

你可以在Keras Google group裡提問以獲得幫助,如果你生活在中國大陸的話,梯子請自備

你也可以在Github issues裡提問。在提問之前請確保你閱讀過我們的指導

同時,我們也歡迎同學們加我們的QQ群119427073進行討論(潛水和灌水會被T,入群說明公司/學校-職位/年級)

小額贊助

如果你覺得本文檔對你的研究和使用有所幫助,歡迎掃下面的二維碼對作者進行小額贊助,以鼓勵作者進一步完善文檔內容,提高文檔質量。同時,不妨為本文檔的github加顆星哦

如果你覺得有用頁面下有小額贊助的二維碼或微信/支付寶帳號,說明該頁面由其他作者貢獻,要對他們進行小額贊助請使用該頁面下的二維碼或帳號

一些基本概念

在開始學習Keras之前,我們希望傳遞一些關於Keras,關於深度學習的基本概念和技術,我們建議新手在使用Keras之前瀏覽一下本頁面提到的內容,這將減少你學習中的困惑

符號計算

Keras的底層庫使用Theano或TensorFlow,這兩個庫也稱為Keras的後端。無論是Theano還是TensorFlow,都是一個「符號主義」的庫。

因此,這也使得Keras的編程與傳統的Python代碼有所差別。籠統的說,符號主義的計算首先定義各種變量,然後建立一個「計算圖」,計算圖規定了各個變量之間的計算關係。建立好的計算圖需要編譯已確定其內部細節,然而,此時的計算圖還是一個「空殼子」,裡面沒有任何實際的數據,只有當你把需要運算的輸入放進去後,才能在整個模型中形成數據流,從而形成輸出值。

Keras的模型搭建形式就是這種方法,在你搭建Keras模型完畢後,你的模型就是一個空殼子,只有實際生成可調用的函數後(K.function),輸入數據,才會形成真正的數據流。

使用計算圖的語言,如Theano,以難以調試而聞名,當Keras的Debug進入Theano這個層次時,往往也令人頭痛。沒有經驗的開發者很難直觀的感受到計算圖到底在幹些什麼。儘管很讓人頭痛,但大多數的深度學習框架使用的都是符號計算這一套方法,因為符號計算能夠提供關鍵的計算優化、自動求導等功能。

我們建議你在使用前稍微了解一下Theano或TensorFlow,Bing/Google一下即可,如果我們要反baidu,那就從拒絕使用baidu開始,光撂嘴炮是沒有用的。

張量

張量,或tensor,是本文檔會經常出現的一個詞彙,在此稍作解釋。

使用這個詞彙的目的是為了表述統一,張量可以看作是向量、矩陣的自然推廣,我們用張量來表示廣泛的數據類型。

規模最小的張量是0階張量,即標量,也就是一個數。

當我們把一些數有序的排列起來,就形成了1階張量,也就是一個向量

如果我們繼續把一組向量有序的排列起來,就形成了2階張量,也就是一個矩陣

把矩陣摞起來,就是3階張量,我們可以稱為一個立方體,具有3個顏色通道的彩色圖片就是一個這樣的立方體

把矩陣摞起來,好吧這次我們真的沒有給它起別名了,就叫4階張量了,不要去試圖想像4階張量是什麼樣子,它就是個數學上的概念。

張量的階數有時候也稱為維度,或者軸,軸這個詞翻譯自英文axis。譬如一個矩陣[[1,2],[3,4]],是一個2階張量,有兩個維度或軸,沿著第0個軸(為了與python的計數方式一致,本文檔維度和軸從0算起)你看到的是[1,2],[3,4]兩個向量,沿著第1個軸你看到的是[1,3],[2,4]兩個向量。

要理解「沿著某個軸」是什麼意思,不妨試著運行一下下面的代碼:

import numpy as npa = np.array([[1,2],[3,4]])sum0 = np.sum(a, axis=0)sum1 = np.sum(a, axis=1)print sum0print sum1

關於張量,目前知道這麼多就足夠了。事實上我也就知道這麼多

'th'與'tf'

這是一個無可奈何的問題,在如何表示一組彩色圖片的問題上,Theano和TensorFlow發生了分歧,'th'模式,也即Theano模式會把100張RGB三通道的16×32(高為16寬為32)彩色圖表示為下面這種形式(100,3,16,32),Caffe採取的也是這種方式。第0個維度是樣本維,代表樣本的數目,第1個維度是通道維,代表顏色通道數。後面兩個就是高和寬了。

而TensorFlow,即'tf'模式的表達形式是(100,16,32,3),即把通道維放在了最後。這兩個表達方法本質上沒有什麼區別。

Keras默認的後端是Theano,所以所有層的默認數據組織形式是'th',你按這個方式組織數據即可。利用Keras自帶的資料庫模塊下載的資料庫也長這個樣子。但是如果你習慣把通道維放在最後面,記得所有需要的地方標明你的數據形式是'tf'。

唉,真是蛋疼,你們商量好不行嗎?

泛型模型算是本文檔比較原創的詞彙了,所以這裡要說一下

在原本的Keras版本中,模型其實有兩種,一種叫Sequential,稱為序貫模型,也就是單輸入單輸出,一條路通到底,層與層之間只有相鄰關係,跨層連接統統沒有。這種模型編譯速度快,操作上也比較簡單。第二種模型稱為Graph,即圖模型,這個模型支持多輸入多輸出,層與層之間想怎麼連怎麼連,但是編譯速度慢。可以看到,Sequential其實是Graph的一個特殊情況。

在現在這版Keras中,圖模型被移除,而增加了了「functional model API」,這個東西,更加強調了Sequential是特殊情況這一點。一般的模型就稱為Model,然後如果你要用簡單的Sequential,OK,那還有一個快捷方式Sequential。

由於functional model API表達的是「一般的模型」這個概念,我們這裡將其譯為泛型模型,即只要這個東西接收一個或一些張量作為輸入,然後輸出的也是一個或一些張量,那不管它是什麼鬼,統統都稱作「模型」。如果你有更貼切的譯法,也歡迎聯繫我修改。

這個概念與Keras無關,老實講不應該出現在這裡的,但是因為它頻繁出現,而且不了解這個技術的話看函數說明會很頭痛,這裡還是簡單說一下。

深度學習的優化算法,說白了就是梯度下降。每次的參數更新有兩種方式。

第一種,遍歷全部數據集算一次損失函數,然後算函數對各個參數的梯度,更新梯度。這種方法每更新一次參數都要把數據集裡的所有樣本都看一遍,計算量開銷大,計算速度慢,不支持在線學習,這稱為Batch gradient descent,批梯度下降。

另一種,每看一個數據就算一下損失函數,然後求梯度更新參數,這個稱為隨機梯度下降,stochastic gradient descent。這個方法速度比較快,但是收斂性能不太好,可能在最優點附近晃來晃去,hit不到最優點。兩次參數的更新也有可能互相抵消掉,造成目標函數震蕩的比較劇烈。

為了克服兩種方法的缺點,現在一般採用的是一種折中手段,mini-batch gradient decent,小批的梯度下降,這種方法把數據分為若干個批,按批來更新參數,這樣,一個批中的一組數據共同決定了本次梯度的方向,下降起來就不容易跑偏,減少了隨機性。另一方面因為批的樣本數與整個數據集相比小了很多,計算量也不是很大。

基本上現在的梯度下降都是基於mini-batch的,所以Keras的模塊中經常會出現batch_size,就是指這個。

順便說一句,Keras中用的優化器SGD是stochastic gradient descent的縮寫,但不代表是一個樣本就更新一回,還是基於mini-batch的。

對新手友好的小說明

雖然這不是我們應該做的工作,但為了體現本教程對新手的友好,我們在這裡簡單列一下使用keras需要的先行知識。稍有經驗的研究者或開發者請忽略本節,對於新手,我們建議在開始之前,確保你了解下面提到的術語的基本概念。如果你確實對某項內容不了解,請首先查閱相關資料,以免在未來使用中帶來困惑。

關於Python

顯然你應對Python有一定的熟悉,包括其基本語法,數據類型,語言特點等,如果你還不能使用Python進行程序設計,或不能避免Python中常見的一些小陷阱,或許你應該先去找個教程補充一下。這裡推一個快速學習Python的教程廖雪峰的Python教程

你應該有面向對象的概念,知道類、對象、封裝、多態、繼承、作用域等術語的含義。

你應該對Python的科學計算包和深度學習包有一定了解,這些包包含但不限於numpy, scipy, scikit-learn, pandas...

特別地,你需要了解什麼是生成器函數(generator),以及如何編寫生成器函數。什麼是匿名函數(lambda)

關於深度學習

由於Keras是為深度學習設計的工具,我們這裡只列舉深度學習中的一些基本概念。請確保你對下面的概念有一定理解。

有監督學習,無監督學習,分類,聚類,回歸

神經元模型,多層感知器,BP算法

目標函數(損失函數),激活函數,梯度下降法

全連接網絡、卷積神經網絡、遞歸神經網絡

訓練集,測試集,交叉驗證,欠擬合,過擬合

數據規範化

其他我還沒想到的東西……想到再補充

其他

其他需要注意的概念,我們將使用[Tips]標註出來,如果該概念反覆出現又比較重要,我們會寫到這裡。就醬,玩的愉快喲。

更多請閱讀原文查看官方網站全部文檔!

一起學習討論:qq群號 325921031;微信群請後臺留言加群或下方二維碼;

線下活動報名請後臺留言所在地區;

其他入門乾貨訪問公眾號createamind即可。

相關焦點

  • Keras官方中文版文檔正式發布了
    今年 1 月 12 日,Keras 作者 Franois Chollet 在推特上表示因為中文讀者的廣泛關注,他已經在 GitHub 上展開了一個 Keras 中文文檔項目。而昨日,Franois Chollet 再一次在推特上表示 Keras 官方文檔已經基本完成!
  • 最適合初學者的深度學習框架 -- Keras官方中文版文檔正式發布
    上展開了一個 Keras 中文文檔項目。而昨日,François Chollet‏ 再一次在推特上表示 Keras 官方文檔已經基本完成!他非常感謝翻譯和校對人員兩個多月的不懈努力,也希望 Keras 中文使用者能繼續幫助提升文檔質量。
  • 喜大普奔,Keras 官方中文版文檔發布啦!
    雷鋒網 AI 研習社消息,日前,Keras 之父 Franois Chollet 在 twitter 上發布消息,宣稱 Keras 中文版本正式上線,同時,對所有做出貢獻的小夥伴們,他也表示由衷的感謝。
  • Keras: 基於 Python 的深度學習庫 PDF版發布啦~
    與其他任何深度學習框架相比,Keras在行業和研究領域的應用率更高(除 TensorFlow 之外,且Keras API 是 TensorFlow 的官方前端,通過 tf.keras 模塊使用)1from keras.models import Sequential23model = Sequential()可以簡單地使用 .add() 來堆疊模型:1from keras.layers import Dense23model.add(Dense(units=64, activation='relu
  • Keras系列(一):介紹
    這裡打一個不恰當的比方,前者相當於tensorflow等後端,後者類比於keras,街機模擬器(keras)把一些常用必殺技(tensorflow等後端中常用的模型、操作等)進行了封裝,讓我們在遊戲(深度學習)的世界裡快樂玩耍。好吧,鐵柱好像暴露了年齡和癖好,以前可沒少挨父母揍啊
  • TensorFlow 1.9 新增 tf.keras 官方入門教程(Keras與TF的深度集成)
    好消息是Keras的許多核心功能已經融入了原生的TensorFlow(tf.keras),TensorFlow 1.9新增tf.keras官方入門文檔,介紹了tf.keras的使用。這幾天打開TensorFlow的官方教程頁(https://www.tensorflow.org/tutorials/),會發現教程頁中給出的DEMO變成了基於tf.keras的教程。
  • 心法利器[3] | tf.keras自學筆記
    下面講的實質性知識的東西,全部來源於tensorflow的源碼和官網版本的API文檔。給個連結吧:tensorflow源碼:https://github.com/tensorflowtensorflow1.15.0文檔:https://tensorflow.google.cn/versions/r1.15/api_docs/python/tf/keras/wrapperstensorflow keras文檔:https://tensorflow.google.cn/guide
  • Keras使用進階(Ⅰ)
    恰好這大半年的research也用到了keras高級點的特性,尋思著是時候寫一篇keras使用進階的文章來記錄下自己「摸魚」的日子.用keras訓練多標籤數據通常用keras做分類任務,一張圖像往往只對應著一種類別,但是在實際的問題中,可能你需要預測出一張圖像的多種屬性。
  • 人工智慧培訓系列:R語言NLP的中文單詞特徵處理 1
    不過對於中文名義特徵的處理相對比較少。對於中文處理,可以看成有兩方面內容,一個是中文分詞,另外一個就是把一個文檔中的中文詞語做為一個個的特徵轉換為稀舒矩陣處理。文檔轉換為多個特徵對應的稀舒矩陣處理請參考R語言NLP的中文單詞特徵處理 2第一個中文分詞:中文分詞與英文單詞用空格不太一樣。還設計到多個字組成的詞語。
  • 10分鐘入門Keras : 兩種快速模型搭建方式
    Sequential 使用方法Sequential 模型如下所示:from keras.models import Sequentialmodel = Sequential()可以簡單地使用 .add() 來堆疊模型:from keras.layers import
  • Pytorch 中文文檔和中文教程
    前言目前對於Pytorch官方文檔的翻譯,我覺得ApacheCN社區是做得最完善的!筆者獲得了ApacheCN社區的同意,放出該社區的翻譯文檔和官方教程,歡迎大家多去GitHub頁面 fork,star!
  • Python官方中文文檔來了
    小夥伴們已經習慣了原汁原味的英文文檔,但如果有官方中文文檔,那麼查閱或理解速度都會大大提升。本文將介紹隱藏在 Python 官網的中文文檔~以前也是有一些第三方維護的 Python 中文文檔,不過可能因為人力等限制,並做不到同步更新與維護。目前也有很多高質量的 Python 中文資源,但大部分都是大牛寫的書或教程,官方文檔的翻譯並得不到保證。
  • TextCNN 模型完全解讀及 Keras 實現
    import pandas as pdimport numpy as npimport jiebaimport kerasfrom keras.layers.merge import concatenatefrom keras.preprocessing.text import Tokenizer
  • keras 教程
    除了上面提到的這些,Sequential模型還有一些其他的API(具體參數含義可以查看Keras文檔):#根據名稱(唯一)或索引值查找網絡層,如果同時提供了 name 和 index,則 index 將優先。
  • 易用的新深度學習框架Keras簡介及使用
    使用文檔在這:http://keras.io/,這個框架貌似是剛剛火起來的,使用上的問題可以到github提issue:https://github.com/fchollet/keras下面簡單介紹一下怎麼使用Keras,以Mnist資料庫為例,編寫一個CNN網絡結構,你將會發現特別簡單。2.
  • Keras深度學習框架配置
    至此,你已經可以運行keras的神經網絡程序了,但是有一個小瑕疵:會警告你cl.exe找不到。就是新建一個txt文檔,粘貼內容,重命名成get-pip.py,注意:文件類型改成了.py運行cmd,cd到get-pip.py所在目錄(我是C:\\Python27),運行代碼:
  • 小白學CNN以及Keras的速成
    去Tensorflow的中文社區,可以看到有一些新手教程,網上也有很多學習材料,推薦看看stanford大學cs224d的課件,http://cs224d.stanford.edu/lectures/CS224d-Lecture7.pdf, 很詳細的介紹了tensorflow。然後你就可以寫tensorflow的程序了。
  • 深度學習——keras教程系列基礎知識
    Keras有四個特性:模塊性、易擴展、用戶友好和基於Python,以下的介紹來自Keras的中文文檔。模塊化。模型被理解為由獨立的、完全可配置的模塊構成的序列或圖。這些模塊可以以儘可能少的限制組裝在一起。特別是神經網絡層、損失函數、優化器、初始化方法、激活函數、正則化方法,它們都是可以結合起來構建新模型的模塊。
  • Python官方中文文檔強勢來襲
    Python 官方支持的文檔一直沒有中文。小夥伴們已經習慣了原汁原味的英文文檔,但如果有官方中文文檔,對於初學者來說,門檻會大大的降低。
  • MXNet開放支持Keras,高效實現CNN與RNN的分布式訓練
    地址:https://github.com/awslabs/keras-apache-mxnetKeras 是用 Python 編寫的高級神經網絡 API,因其快速、簡單的 CNN 和 RNN 原型而廣受歡迎。