学习笔记 Keras:基于Python的深度学习库
目錄:
[TOC]
本系列參考官方文檔官方文檔
這就是Keras
Keras是一個(gè)高層神經(jīng)網(wǎng)絡(luò)API,Keras由純Python編寫(xiě)而成并基Tensorflow、Theano以及CNTK后端。Keras 為支持快速實(shí)驗(yàn)而生,能夠把你的idea迅速轉(zhuǎn)換為結(jié)果,如果你有如下需求,請(qǐng)選擇Keras:
- 簡(jiǎn)易和快速的原型設(shè)計(jì)(keras具有高度模塊化,極簡(jiǎn),和可擴(kuò)充特性)
- 支持CNN和RNN,或二者的結(jié)合
- 無(wú)縫CPU和GPU切換
Keras適用的Python版本是:Python 2.7-3.6
Keras的設(shè)計(jì)原則是
- 用戶友好:Keras是為人類而不是天頂星人設(shè)計(jì)的API。用戶的使用體驗(yàn)始終是我們考慮的首要和中心內(nèi)容。Keras遵循減少認(rèn)知困難的最佳實(shí)踐:Keras提供一致而簡(jiǎn)潔的API, 能夠極大減少一般應(yīng)用下用戶的工作量,同時(shí),Keras提供清晰和具有實(shí)踐意義的bug反饋。
- 模塊性:模型可理解為一個(gè)層的序列或數(shù)據(jù)的運(yùn)算圖,完全可配置的模塊可以用最少的代價(jià)自由組合在一起。具體而言,網(wǎng)絡(luò)層、損失函數(shù)、優(yōu)化器、初始化策略、激活函數(shù)、正則化方法都是獨(dú)立的模塊,你可以使用它們來(lái)構(gòu)建自己的模型。
- 易擴(kuò)展性:添加新模塊超級(jí)容易,只需要仿照現(xiàn)有的模塊編寫(xiě)新的類或函數(shù)即可。創(chuàng)建新模塊的便利性使得Keras更適合于先進(jìn)的研究工作。
- 與Python協(xié)作:Keras沒(méi)有單獨(dú)的模型配置文件類型(作為對(duì)比,caffe有),模型由python代碼描述,使其更緊湊和更易debug,并提供了擴(kuò)展的便利性。
關(guān)于Keras-cn
本文檔是Keras文檔的中文版,包括keras.io的全部?jī)?nèi)容,以及更多的例子、解釋和建議
現(xiàn)在,keras-cn的版本號(hào)將簡(jiǎn)單的跟隨最新的keras release版本
由于作者水平和研究方向所限,無(wú)法對(duì)所有模塊都非常精通,因此文檔中不可避免的會(huì)出現(xiàn)各種錯(cuò)誤、疏漏和不足之處。如果您在使用過(guò)程中有任何意見(jiàn)、建議和疑問(wèn),歡迎發(fā)送郵件到moyan_work@foxmail.com與我取得聯(lián)系。
您對(duì)文檔的任何貢獻(xiàn),包括文檔的翻譯、查缺補(bǔ)漏、概念解釋、發(fā)現(xiàn)和修改問(wèn)題、貢獻(xiàn)示例程序等,均會(huì)被記錄在致謝,十分感謝您對(duì)Keras中文文檔的貢獻(xiàn)!
如果你發(fā)現(xiàn)本文檔缺失了官方文檔的部分內(nèi)容,請(qǐng)積極聯(lián)系我補(bǔ)充。
本文檔相對(duì)于原文檔有更多的使用指導(dǎo)和概念澄清,請(qǐng)?jiān)谑褂脮r(shí)關(guān)注文檔中的Tips,特別的,本文檔的額外模塊還有:
- Keras新手指南:我們新提供了“Keras新手指南”的頁(yè)面,在這里我們對(duì)Keras進(jìn)行了感性介紹,并簡(jiǎn)單介紹了Keras配置方法、一些小知識(shí)與使用陷阱,新手在使用前應(yīng)該先閱讀本部分的文檔。
- Keras資源:在這個(gè)頁(yè)面,我們羅列一些Keras可用的資源,本頁(yè)面會(huì)不定期更新,請(qǐng)注意關(guān)注
- 深度學(xué)習(xí)與Keras:位于導(dǎo)航欄最下方的該模塊翻譯了來(lái)自Keras作者博客keras.io 和其他Keras相關(guān)博客的文章,該欄目的文章提供了對(duì)深度學(xué)習(xí)的理解和大量使用Keras的例子,您也可以向這個(gè)欄目投稿。 所有的文章均在醒目位置標(biāo)志標(biāo)明來(lái)源與作者,本文檔對(duì)該欄目文章的原文不具有任何處置權(quán)。如您仍覺(jué)不妥,請(qǐng)聯(lián)系本人(moyan_work@foxmail.com)刪除。
當(dāng)前版本與更新
如果你發(fā)現(xiàn)本文檔提供的信息有誤,有兩種可能:
- 你的Keras版本過(guò)低:記住Keras是一個(gè)發(fā)展迅速的深度學(xué)習(xí)框架,請(qǐng)保持你的Keras與官方最新的release版本相符
- 我們的中文文檔沒(méi)有及時(shí)更新:如果是這種情況,請(qǐng)發(fā)郵件給我,我會(huì)盡快更新
目前文檔的版本號(hào)是2.0.9,對(duì)應(yīng)于官方的2.0.9 release 版本, 本次更新的主要內(nèi)容是:
- recurrent新增ConvLSTM2D,SimpleRNNCell, LSTMCell, GRUCell, StackedRNNCells, CuDNNGRE, CuDNNLSTM層
- application中新增了模型InceptionResNetV2
- datasets新增fasion mnist
- FAQ新增Keras的多GPU卡運(yùn)行指南
- utils新增多卡支持函數(shù)multi_gpu_model
- model.compile和model.fit API更新
由于年久失修,深度學(xué)習(xí)與Keras欄目中的很多內(nèi)容的代碼已經(jīng)不再可用,我們決定在新的文檔中移除這部分。仍然想訪問(wèn)這些內(nèi)容(以及已經(jīng)被移除的一些層,如Maxout)的文檔的同學(xué),請(qǐng)下載中文文檔的legacy文件夾,并使用文本編輯器(如sublime)打開(kāi)對(duì)應(yīng).md文件。
修正了一些錯(cuò)誤,感謝@孫永海,@Feng Ying的指正
此外,感謝@zh777k制作了Keras2.0.4中文文檔的離線版本,對(duì)于許多用戶而言,這個(gè)版本的keras對(duì)大多數(shù)用戶而言已經(jīng)足夠使用了。下載地址在百度云盤(pán)
注意,keras在github上的master往往要高于當(dāng)前的release版本,如果你從源碼編譯keras,可能某些模塊與文檔說(shuō)明不相符,請(qǐng)以官方Github代碼為準(zhǔn)
快速開(kāi)始:30s上手Keras
Keras的核心數(shù)據(jù)結(jié)構(gòu)是“模型”,模型是一種組織網(wǎng)絡(luò)層的方式。Keras中主要的模型是Sequential模型,Sequential是一系列網(wǎng)絡(luò)層按順序構(gòu)成的棧。你也可以查看函數(shù)式模型來(lái)學(xué)習(xí)建立更復(fù)雜的模型
Sequential模型如下
from keras.models import Sequentialmodel = Sequential()將一些網(wǎng)絡(luò)層通過(guò).add()堆疊起來(lái),就構(gòu)成了一個(gè)模型:from keras.layers import Dense, Activationmodel.add(Dense(units=64, input_dim=100)) model.add(Activation("relu")) model.add(Dense(units=10)) model.add(Activation("softmax"))完成模型的搭建后,我們需要使用.compile()方法來(lái)編譯模型:model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])編譯模型時(shí)必須指明損失函數(shù)和優(yōu)化器,如果你需要的話,也可以自己定制損失函數(shù)。Keras的一個(gè)核心理念就是簡(jiǎn)明易用,同時(shí)保證用戶對(duì)Keras的絕對(duì)控制力度,用戶可以根據(jù)自己的需要定制自己的模型、網(wǎng)絡(luò)層,甚至修改源代碼。from keras.optimizers import SGD model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True))完成模型編譯后,我們?cè)谟?xùn)練數(shù)據(jù)上按batch進(jìn)行一定次數(shù)的迭代來(lái)訓(xùn)練網(wǎng)絡(luò)model.fit(x_train, y_train, epochs=5, batch_size=32)當(dāng)然,我們也可以手動(dòng)將一個(gè)個(gè)batch的數(shù)據(jù)送入網(wǎng)絡(luò)中訓(xùn)練,這時(shí)候需要使用:model.train_on_batch(x_batch, y_batch)隨后,我們可以使用一行代碼對(duì)我們的模型進(jìn)行評(píng)估,看看模型的指標(biāo)是否滿足我們的要求:loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)或者,我們可以使用我們的模型,對(duì)新的數(shù)據(jù)進(jìn)行預(yù)測(cè):classes = model.predict(x_test, batch_size=128)搭建一個(gè)問(wèn)答系統(tǒng)、圖像分類模型,或神經(jīng)圖靈機(jī)、word2vec詞嵌入器就是這么快。支撐深度學(xué)習(xí)的基本想法本就是簡(jiǎn)單的,現(xiàn)在讓我們把它的實(shí)現(xiàn)也變的簡(jiǎn)單起來(lái)!
為了更深入的了解Keras,我們建議你查看一下下面的兩個(gè)tutorial
快速開(kāi)始Sequntial模型 快速開(kāi)始函數(shù)式模型還有我們的新手教程,雖然是面向新手的,但我們閱讀它們總是有益的:
Keras新手指南在Keras代碼包的examples文件夾里,我們提供了一些更高級(jí)的模型:基于記憶網(wǎng)絡(luò)的問(wèn)答系統(tǒng)、基于LSTM的文本的文本生成等。
安裝
Keras使用了下面的依賴包,三種后端必須至少選擇一種,我們建議選擇tensorflow。
numpy,scipypyyamlHDF5, h5py(可選,僅在模型的save/load函數(shù)中使用)如果使用CNN的推薦安裝cuDNN當(dāng)使用TensorFlow為后端時(shí):
TensorFlow當(dāng)使用Theano作為后端時(shí):
Theano當(dāng)使用CNTK作為后端時(shí):
CNTK“后端”翻譯自backend,指的是Keras依賴于完成底層的張量運(yùn)算的軟件包。
從源碼安裝Keras時(shí),首先git clone keras的代碼:
git clone https://github.com/fchollet/keras.git接著 cd 到Keras的文件夾中,并運(yùn)行下面的安裝命令:
sudo python setup.py install你也可以使用PyPI來(lái)安裝Keras
sudo pip install keras如果你用的是virtualenv虛擬環(huán)境,不要用sudo就好。
詳細(xì)的Windows和Linux安裝教程請(qǐng)參考“Keras新手指南”中給出的安裝教程,特別鳴謝SCP-173編寫(xiě)了這些教程
在Theano、CNTK、TensorFlow間切換
Keras默認(rèn)使用TensorFlow作為后端來(lái)進(jìn)行張量操作,如需切換到Theano,請(qǐng)查看這里
技術(shù)支持
你可以在下列網(wǎng)址提問(wèn)或加入Keras開(kāi)發(fā)討論:
Keras Google groupKeras Slack channel,點(diǎn)擊這里獲得邀請(qǐng).你也可以在Github issues里提問(wèn)或請(qǐng)求新特性。在提問(wèn)之前請(qǐng)確保你閱讀過(guò)我們的指導(dǎo)
另外,對(duì)于習(xí)慣中文的用戶,我們推薦在“集智”平臺(tái)提問(wèn),該平臺(tái)由Kaiser等搭建,支持在線代碼運(yùn)行環(huán)境,我本人會(huì)經(jīng)常訪問(wèn)該網(wǎng)站解答問(wèn)題
最后,我們也歡迎同學(xué)們加我們的QQ群119427073進(jìn)行討論(潛水和灌水會(huì)被T,入群說(shuō)明公司/學(xué)校-職位/年級(jí))
總結(jié)
以上是生活随笔為你收集整理的学习笔记 Keras:基于Python的深度学习库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 家里宽带628连不上_WiFi密码正确,
- 下一篇: 单核工作法9:消减待办任务