使用 Keras + TensorFlow 開發一個複雜深度學習模型
問題導讀:1. 為什麼選擇Keras?2. 怎麼安裝Keras,並且把TensorFlow作為後端?3. Keras序列模型是什麼?4. 如何使用 Keras 儲存和恢復預訓練的模型?5. 如何使用Keras API開發VGG卷積神經網路?6. 如何使用Keras API構建並執行SqueezeNet卷積神經網路?
Keras 是提供一些高可用的 Python API ,能幫助你快速的構建和訓練自己的深度學習模型,它的後端是 TensorFlow 或者 Theano 。本文假設你已經熟悉了 TensorFlow 和卷積神經網路,如果,你還沒有熟悉,那麼可以先看看這個10分鐘入門 TensorFlow 教程[http://cv-tricks.com/artificial- ... ensorflow-tutorial/]和卷積神經網路教程[http://cv-tricks.com/tensorflow- ... age-classification/],然後再回來閱讀這個文章。在這個教程中,我們將學習以下幾個方面:
- 為什麼選擇 Keras?為什麼 Keras 被認為是深度學習的未來?
- 在Ubuntu上面一步一步安裝Keras。
- Keras TensorFlow教程:Keras基礎知識。
- 瞭解 Keras 序列模型
4.1 實際例子講解線性迴歸問題 - 使用 Keras 儲存和回覆預訓練的模型
- Keras API
6.1 使用Keras API開發VGG卷積神經網路
6.2 使用Keras API構建並執行SqueezeNet卷積神經網路
1. 為什麼選擇Keras?
Keras 是 Google 的一位工程師 François Chollet [https://twitter.com/fchollet]開發的一個框架,可以幫助你在 Theano 上面進行快速原型開發。後來,這被擴充套件為 TensorFlow 也可以作為後端。並且最近,TensorFlow決定將其作為 contrib 檔案中的一部分進行提供。
Keras 被認為是構建神經網路的未來,以下是一些它流行的原因:
- 輕量級和快速開發:Keras 的目的是在消除樣板程式碼。幾行 Keras 程式碼就能比原生的 TensorFlow 程式碼實現更多的功能。你也可以很輕鬆的實現 CNN 和 RNN,並且讓它們執行在 CPU 或者 GPU 上面。
- 框架的“贏者”:Keras 是一個API,執行在別的深度學習框架上面。這個框架可以是 TensorFlow 或者 Theano。Microsoft 也計劃讓 CNTK 作為 Keras 的一個後端。目前,神經網路框架世界是非常分散的,並且發展非常快。具體,你可以看看 Karpathy 的這個推文:
想象一下,我們每年都要去學習一個新的框架,這是多麼的痛苦。到目前為止,TensorFlow 似乎成為了一種潮流,並且越來越多的框架開始為 Keras 提供支援,它可能會成為一種標準。
目前,Keras 是成長最快的一種深度學習框架。因為可以使用不同的深度學習框架作為後端,這也使得它成為了流行的一個很大的原因。你可以設想這樣一個場景,如果你閱讀到了一篇很有趣的論文,並且你想在你自己的資料集上面測試這個模型。讓我們再次假設,你對TensorFlow 非常熟悉,但是對Theano瞭解的非常少。那麼,你必須使用TensorFlow 對這個論文進行復現,但是這個週期是非常長的。但是,如果現在程式碼是採用Keras寫的,那麼你只要將後端修改為TensorFlow就可以使用程式碼了。這將是對社群發展的一個巨大的推動作用。
2. 怎麼安裝Keras,並且把TensorFlow作為後端
a) 依賴安裝
安裝 h5py,用於模型的儲存和載入:[Python] ?
1 | pip install h5py |
還有一些依賴包也要安裝。[Python] ?
12 | pip install numpy scipy pip install pillow |
1 | sudo pip install keras |
12 | >>> import kerasUsing TensorFlow backend. >>> keras.__version__ '2.0.4' |
一旦,Keras 被安裝完成,你需要去修改後端檔案,也就是去確定,你需要 TensorFlow 作為後端,還是 Theano 作為後端,修改的配置檔案位於 ~/.keras/keras.json 。具體配置如下:[Python] ?
123456 | { "floatx" : "float32" , "epsilon" : 1e - 07 , "backend" : "tensorflow" , "image_data_format" : "channels_last" } |
請注意,引數 image_data_format 是 channels_last ,也就是說這個後端是 TensorFlow。因為,在TensorFlow中影象的儲存方式是[height, width, channels],但是在Theano中是完全不同的,也就是 [channels, height, width]。因此,如果你沒有正確的設定這個引數,那麼你模型的中間結果將是非常奇怪的。對於Theano來說,這個引數就是channels_first。
那麼,至此你已經準備好了,使用Keras來構建模型,並且把TensorFlow作為後端。
3. Keras基礎知識
在Keras中主要的資料結構是 model ,該結構定義了一個完整的圖。你可以向已經存在的圖中加入任何的網路結構。[Python] ?
1 | import keras |
- Sequential models:這種方法用於實現一些簡單的模型。你只需要向一些存在的模型中新增層就行了。
- Functional API:Keras的API是非常強大的,你可以利用這些API來構造更加複雜的模型,比如多輸出模型,有向無環圖等等。
在這一部分中,我將來介紹Keras Sequential models的理論。我將快速的解釋它是如何工作的,還會利用具體程式碼來解釋。之後,我們將解決一個簡單的線性迴歸問題,你可以在閱讀的同時執行程式碼,來加深印象。
以下程式碼是如何開始匯入和構建序列模型。[Python] ?
12 | from keras.models import Sequential models = Sequential() |
接下來我們可以向模型中新增 Dense(full connected layer),Activation,Conv2D,MaxPooling2D函式。[Python] ?
123 | from keras.layers import Dense, Activation, Conv2D, MaxPooling2D, Flatten, Dropout model.add(Conv2D( 64 , ( 3 , 3 ), activation = 'relu' , input_shape = ( 100 , 100 , 32 ))) # This ads a Convolutional layer with 64 filters of size 3 * 3 to the graph |
以下是如何將一些最流行的圖層新增到網路中。我已經在卷積神經網路教程[http://cv-tricks.com/tensorflow- ... age-classification/]中寫了很多關於圖層的描述。
1. 卷積層
這裡我們使用一個卷積層,64個卷積核,維度是33的,之後採用 relu 啟用函式進行啟用,輸入資料的維度是 `100100*32`。注意,如果是第一個卷積層,那麼必須加上輸入資料的維度,後面幾個這個引數可以省略。[Python] ?
1 | model.add(Conv2D( 64 , ( 3 , 3 ), activation = 'relu' , input_shape = ( 100 , 100 , 32 ))) |
2. MaxPooling 層
指定圖層的型別,並且指定赤的大小,然後自動完成赤化操作,酷斃了![Python] ?
1 | 相關推薦使用 Keras + TensorFlow 開發一個複雜深度學習模型本帖最後由 Oner 於 2017-5-25 19:37 編輯問題導讀:1. 為什麼選擇Keras?2. 怎麼安裝Keras,並且把TensorFlow作為後端?3. Keras序列模型是什麼?4. 如何使用 Keras 儲存和恢復預訓練的模型?5. 如何使用Keras API開發VGG卷積神經網路?6. 如 Keras TensorFlow教程:如何從零開發一個複雜深度學習模型Keras 是提供一些高可用的 Python API ,能幫助你快速的構建和訓練自己的深度學習模型,它的後端是 TensorFlow 或者 Theano 。本文假設你已經熟悉了 TensorFlow 和卷積神經網路,如果,你還沒有熟悉,那麼可以先看看這個10分鐘入門 TensorFlow 教程和卷積 Deeplearning4j 實戰(8) : Keras為媒介匯入Tensorflow/Theano等其他深度學習庫的模型在之前的幾篇部落格中,我直接通過Deeplearning4j進行建模、訓練以及評估預測。但在實際使用中,各個團隊未必都會將Deeplearning4j作為首選的開源庫。這樣一來,模型的複用就變得非常困難,無形中增加了重複勞動的成本。雖然我們可以自己開發一套不同庫之間模型轉換的工具,但是這需要對轉換雙 ######好好好,本質#####基於LSTM搭建一個文字情感分類的深度學習模型:準確率往往有95%以上基於情感詞典的文字情感分類 傳統的基於情感詞典的文字情感分類,是對人的記憶和判斷思維的最簡單的模擬,如上圖。我們首先通過學習來記憶一些基本詞彙,如否定詞語有“不”,積極詞語有“喜歡”、“愛”,消極詞語有“討厭”、“恨”等,從而在大腦中形成一個基本的語料庫。然後,我們再對輸入的句子進行最直接 關於訓練深度學習模型deepNN時,訓練精度維持固定值,模型不收斂的解決辦法(tensorflow實現)一、背景 最近一直在做人臉表情的識別,用到的程式是之間的一篇文章中的程式:深度學習(一)——deepNN模型實現攝像頭實時識別人臉表情(C++和python3.6混合程式設計)。這裡我只進行了簡單的程式修改。 由於該程式是利用fer2013資料集做的,效果不是很好,人臉表情的識別精度僅有70 利用 TensorFlow 一步一步構建一個多工學習模型介紹 為什麼是多工學習? 當你在思考新事物的時候,他們通常會利用他們以前的經驗和獲得的知識來加速現在的學習過程。當我們學習一門新語言的時候,尤其是相關的語言時,我們通常會使用我們一級學過的語言知識來加快這一門新語言的學習過程。這個過程也可以用另一種方式來理解 —— 學習一種 基於Ubuntu + anaconda + tensorflow + jupyter的Python深度學習開發環境配置1.啟用Anaconda環境 下載anaconda並拷貝到安裝目錄中並解壓,下載地址為: https://repo.anaconda.com/archive/Anaconda2-5.3.0-Linux-x86_64.sh 跳轉到anaconda的bin目錄,啟用命令為 《TensorFlow:實戰Google深度學習框架》——5.4 模型持久化(模型儲存、模型載入)目錄 1、持久化程式碼實現 2、載入儲存的TensorFlow模型 3、載入部分變數 4、載入變數時重新命名 1、持久化程式碼實現 TensorFlow提供了一個非常簡單的API來儲存和還原一個神經網路模型。這個API就是tf.train.Saver類。一下程式碼給出了儲 幾種深度學習模型,keras實現#coding=utf-8 from keras.models import Sequential from keras.layers import Dense,Flatten from keras.layers.convolutional import Con 利用docker部署深度學習模型的一個最佳實踐前言 最近團隊的模型部署上線終於全面開始用上docker了,這感覺,真香! 講道理,docker是天然的微服務,確實是能敏捷高效的解決深度學習這一塊的幾個痛點。 部分神經網路框架比如caffe依賴過重,安裝困難。 各種網路模型未做工程化優化,部署困難。 tens 深度學習模型的量化方法(論文學習 & tensorflow lite量化方法)curl -L "https://storage.googleapis.com/download.tensorflow.org/models/inception_v3_2016_08_28_frozen.pb.tar.gz" | tar -C tensorflow/examples/label_imag 深度學習模型的優化演算法及tensorflow實現模型的優化對於傳統機器學習和深度學習都是很重要的,尤其是深度學習,在訓練過中很可能需要解決一些更加困難的挑戰。目前來說,流行且使用較廣泛的優化演算法有隨機梯度下降,具動量的隨機梯度下降,RMSProp演算法,具動量的RMSProp,AdaDelta和Adam等, Deep Learning-TensorFlow (10) CNN卷積神經網路_ TFLearn 快速搭建深度學習模型環境:Win8.1 TensorFlow1.0.1 軟體:Anaconda3 (整合Python3及開發環境) TensorFlow安裝:pip install tensorflow (CPU版) pip install tensorflow-gpu (GPU版) TFLe 深度學習模型調參-基於keras的python學習筆記(四)版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/weixin_44474718/article/details/86250535 適用於少量資料的實驗是非常有效的方法。 from keras.models import Sequent 評估深度學習模型-在keras中使用scikit-learn-基於keras的python學習筆記(三)版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/weixin_44474718/article/details/86249827 使用交叉驗證評估模型 KerasClassifier和kerasregressor 類使用引數build 評估深度學習模型-基於keras的python學習筆記(二)版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/weixin_44474718/article/details/86238644 一、自動評估 keras可將資料集一部分分成評估資料集,並在每個epoch中使用該評估資料集對模型進行評 使用Keras由零開始快速構造自己的深度學習模型《SDCC 2017人工智慧技術實戰》 什麼是keras Keras是一個高層神經網路API,Keras由純Python編寫而成並基Tensorflow、Theano以及CNTK後端。Keras 為支援快速實驗而生,能夠把你的idea迅速轉換為結果,如果 keras實現常用深度學習模型LeNet,AlexNet,ZFNet,VGGNet,GoogleNet,ResnetLeNet #coding=utf-8 from keras.models import Sequential from keras.layers import Dense,Flatten from keras.layers.con 深度學習模型視覺化——Netron(支援tf, caffe, keras,mxnet等多種框架)目前的Netron支援主流各種框架的模型結構視覺化工作 我的是linux所以下載了.deb格式 sudo dpkg -i deb檔名 果然報錯,缺少依賴,都是老套路了 sudo a 使用GOOGLE COLAB訓練深度學習模型edi play bottom art one con style right tag 來自為知筆記(Wiz)使用GOOGLE COLAB訓練深度學習模型 |