DL框架之Keras:深度学习框架Keras框架的简介、安装(Python库)、相关概念、Keras模型使用、使用方法之详细攻略
DL框架之Keras:深度學習框架Keras框架的簡介、安裝(Python庫)、相關概念、Keras模型使用、使用方法之詳細攻略
?
?
?
?
目錄
Keras的簡介
1、Keras的特點
2、Keras四大特性
3、Keras的用戶體驗
4、如果你有如下需求,請選擇Keras
5、Keras支持多后端和多平臺
Keras的安裝
Keras的使用方法
1、The Sequential Model 序列模型
2、The functional API?函數式API
3、Model subclassing?模型子類化
其他概念
1、shape
2、回調
3、保存和恢復
4、動態圖機制:Eager Execution
Keras的中的模型使用
1、查找使用方法
2、Keras的?6 種預訓練模型?
3、Keras深度學習框架的注意事項(自動下載存放路徑等)、使用方法之詳細攻略
?
?
?
相關文章
DL框架之Keras:Python庫之Keras庫的簡介、安裝、使用方法詳細攻略
keras-yolo3:python庫之keras-yolo3的簡介、安裝、使用方法詳細攻略
Keras的簡介
? ? ?Keras是TensorFlow官方的高層API。Keras是一個高層神經網絡API,并對TensorFlow等有較好的優化。,Keras由純Python編寫而成并基Tensorflow、Theano以及CNTK后端,也就是Keras基于什么東西來做運算。Keras 為支持快速實驗而生,能夠把你的idea迅速轉換為結果。
1、Keras的特點
- tensorflow.keras(tf.keras) module
- Part of core TensorFlow since v1.4
- Full Keras API
- 針對TF更好的優化
- 與TF特別功能更好的整合,Estimator API、Eager execution
2、Keras四大特性
- 1、用戶友好:Keras是為人類而非機器設計的API。用戶的使用體驗始終是我們考慮的首要和中心內容。Keras遵循減少認知困難的最佳實踐:Keras提供一致而簡潔的API, 能夠極大減少一般應用下用戶的工作量,同時,Keras提供清晰和具有實踐意義的bug反饋。?
- 2、模塊性:模型可理解為一個層的序列或數據的運算圖,完全可配置的模塊可以用最少的代價自由組合在一起。具體而言,網絡層、損失函數、優化器、初始化策略、激活函數、正則化方法都是獨立的模塊,你可以使用它們來構建自己的模型。?
- 3、易擴展性:添加新模塊超級容易,只需要仿照現有的模塊編寫新的類或函數即可。創建新模塊的便利性使得Keras更適合于先進的研究工作。?
- 4、與Python協作:Keras沒有單獨的模型配置文件類型(作為對比,caffe有),模型由python代碼描述,使其更緊湊和更易debug,并提供了擴展的便利性。
?
3、Keras的用戶體驗
(1)、Keras是專為人而非機器設計的API
- 它把用戶體驗放在首要和中心位置。
- Keras遵循減少認知困難的最佳實踐:它提供一致且簡單的API,將常見用例所需的用戶操作數量降至最低,并且在用戶錯誤時提供清晰和可操作的反饋。
(2)、Keras易于學習且易于使用
- 作為Keras用戶,可以更高效地工作,讓你比競爭對手更快地嘗試更多創意和幫助你贏得機器學習競賽。
(3)、這種易用性不是以降低靈活性為代價
- Keras與低級深度學習語言(特別是TensorFlow)集成,能夠實現可以用基本語言構建的任何東西。特別是,作為tf.keras,Keras API與TensorFlow工作流程無縫集成。
?
4、如果你有如下需求,請選擇Keras
- 簡易和快速的原型設計(keras具有高度模塊化,極簡,和可擴充特性)
- 支持CNN和RNN,或二者的結合
- 無縫CPU和GPU切換。
?
5、Keras支持多后端和多平臺
(1)、支持多種語言:Develop in Python, R ? On Unix, Windows, OSX
(2)、支持多個后端:Keras與TensorFlow&Theano
? ? ?TensorFlow和theano以及Keras都是深度學習框架,TensorFlow和theano比較靈活,也比較難學,它們其實就是一個微分器 ?Keras其實就是TensorFlow和Keras的接口(Keras作為前端,TensorFlow或theano作為后端),它也很靈活,且比較容易學。可以把keras看作為tensorflow封裝后的一個API。Keras 是一個用于快速構建深度學習原型的高級庫。我們在實踐中發現,它是數據科學家應用深度學習的好幫手。Keras 目前支持兩種后端框架:TensorFlow 與 Theano,而且 Keras 再過不久就會成為 TensorFlow 的默認 API。
Run the same code with…
- -TensorFlow
- -CNTK
- -Theano
- -MXNet
- -PlaidML
(3)、支持多運算平臺:CPU, NVIDIA GPU, AMD GPU, TPU
?
Keras: 基于 Python 的深度學習庫
Keras中文文檔
tensorflow.org/guide/keras
?
?
?
Keras的安裝
pip install Keras
python -m pip install keras
哈哈,大功告成!繼續學習去啦!
pip install --upgrade Kera
190827更新到2.2.5
190827再次還原到2.2.4
相關文章
Py之keras-resnet:keras-resnet的簡介、安裝、使用方法之詳細攻略
?
?
Keras的使用方法
0、三種API方式:The Sequential Model (序列模型)、The functional API (函數式API)、Model subclassing(模型子類化)
from keras.models import Model from keras.callbacks import ModelCheckpoint from keras.layers import Conv2D, MaxPool2D, Flatten, Dropout, Dense, Input from keras.optimizers import Adam from keras.backend.tensorflow_backend import set_session from keras.utils.vis_utils import model_to_dotimport tensorflow as tf from keras.backend.tensorflow_backend import set_sessionnp.random.seed(5) config = tf.ConfigProto() config.gpu_options.allow_growth=True set_session(tf.Session(config=config))?
1、The Sequential Model 序列模型
-非常簡單
-僅適用于單輸入,單輸出,順序的層堆疊
-適用于70%以上的用例
| Sequential 序列模型如所示 | |
| 可以簡單地使用.add() 來堆疊模型 | |
| 在完成了模型的構建后, 可以使用.compile() 來配置學習過程: | |
| 如果需要,還可以進一步地配置優化器: | |
| 批量地在訓練數據上進行迭代: | # x_train 和y_train 是Numpy 數組--就像在Scikit-Learn API 中一樣 或者,可以手動地將批次的數據提供給模型: |
| 一行代碼就能評估模型性能: | |
| 對新的數據生成預測 |
1、快速開始序貫(Sequential)模型 ?
序貫模型是多個網絡層的線性堆疊,也就是“一條路走到黑”。 ?
(1)、可以通過向Sequential模型傳遞一個layer的list來構造該模型: ?
from keras.models import Sequential?
from keras.layers import Dense, Activation ?
model = Sequential([?Dense(32, units=784),?Activation('relu'),?Dense(10),?Activation('softmax'), ])?
(2)、也可以通過.add()方法一個個的將layer加入模型中: ?
model = Sequential() model.add(Dense(32, input_shape=(784,)))?
model.add(Activation('relu'))?
?
?
?
2、The functional API?函數式API
-象玩樂高積木
-多輸入,多輸出,任意靜態圖拓撲
-適用于95%的用例
Keras 函數式API 是定義復雜模型(如多輸出模型、有向無環圖,或具有共享層的模型)的方法。
| 例一:全連接網絡 |
?
3、Model subclassing?模型子類化
-最大的靈活性
-更大的可能錯誤面
(1)、通過對tf.keras.Model 進行子類化并定義你自己的前向傳播來構建完全可自定義的模型。在__init__ 方法中創建層并將它們設置為類實例的屬性。在call 方法中定義前向傳播。
(2)、在啟用Eager Execution 時,模型子類化特別有用,因為可以命令式地編寫前向傳播。
(3)、以下示例展示了使用自定義前向傳播進行子類化的tf.keras.Model
?
其他概念
1、shape
(1)、指定輸入數據的shape ?
模型需要知道輸入數據的shape,因此,Sequential的第一層需要接受一個關于輸入數據shape的參數,后面的各個層則可以自動的推導出中間數據的shape,因此不需要為每個層都指定這個參數。
(2)、關于張量shape ?更多詳細內容參考這個博客https://blog.csdn.net/u013378306/article/details/56281549
? ?在Keras和Tensorflow中,數據是以張量的形式表示的,張量的形狀就是shape。TensorFlow用張量這種數據結構來表示所有的數據.你可以把一個張量想象成一個n維的數組或列表.一個張量有一個靜態類型和動態類型的維數.張量可以在圖中的節點之間流通即Flow。
? ?你可以認為一個二階張量就是我們平常所說的矩陣,一階張量可以認為是一個向量.對于一個二階張量你可以用語句t[i, j]來訪問其中的任何元素.而對于三階張量你可以用't[i, j, k]'來訪問其中的任何元素.
(1)input_shape就是指輸入張量的shape。例如 input_dim=784,說明輸入是一個784維的向量,這相當于一個一階的張量,它的shape就是(784,)
2、回調
1、回調是傳遞給模型的對象,用于在訓練期間自定義該模型并擴展其行為。你可以編寫自定義回調,也可以使用包含以下方法的內置tf.keras.callbacks:
tf.keras.callbacks.ModelCheckpoint '定期保存模型的檢查點。' tf.keras.callbacks.LearningRateScheduler '動態更改學習速率。' tf.keras.callbacks.EarlyStopping '在驗證效果不再改進時中斷訓練。' tf.keras.callbacks.TensorBoard '使用TensorBoard 監控模型的行為。'2、要使用tf.keras.callbacks.Callback,請將其傳遞給模型的fit 方法:
callbacks = [# Interrupt training if `val_loss` stops improving for over 2 epochstf.keras.callbacks.EarlyStopping(patience=2, monitor='val_loss'),# Write TensorBoard logs to `./logs` directorytf.keras.callbacks.TensorBoard(log_dir='./logs')] model.fit(data, labels, batch_size=32, epochs=5, callbacks=callbacks,validation_data=(val_data, val_labels))3、保存和恢復
(1)僅限權重:使用tf.keras.Model.save_weights 保存并加載模型的權重
model = tf.keras.Sequential([layers.Dense(64, activation='relu'),layers.Dense(10, activation='softmax')]) model.compile(optimizer=tf.train.AdamOptimizer(0.001),loss='categorical_crossentropy',metrics=['accuracy'])'默認情況下,會以TensorFlow 檢查點文件格式保存模型的權重' # Save weights to a TensorFlow Checkpoint file model.save_weights('./weights/my_model') # Restore the model's state,# this requires a model with the same architecture. model.load_weights('./weights/my_model')'權重也可以另存為KerasHDF5 格式(Keras多后端實現的默認格式)' # Save weights to a HDF5 filemodel.save_weights('my_model.h5', save_format='h5') # Restore the model's statemodel. load_weights('my_model.h5')(2)、僅限配置:可以保存模型的配置,此操作會對模型架構(不含任何權重)進行序列化。即使沒有定義原始模型的代碼,保存的配置也可以重新創建并初始化相同的模型。Keras 支持JSON 和YAML 序列化格式:
# Serialize a model to JSON format json_string = model.to_json() json_string import json import pprint pprint.pprint(json.loads(json_string))'從json重新創建模型' fresh_model = tf.keras.models.model_from_json(json_string)(3)整個模型:整個模型可以保存到一個文件中,其中包含權重值、模型配置乃至優化器配置。這樣,您就可以對模型設置檢查點并稍后從完全相同的狀態繼續訓練,而無需訪問原始代碼。
# Create a trivial model model = tf.keras.Sequential([layers.Dense(10, activation='softmax', input_shape=(32,)),layers.Dense(10, activation='softmax')]) model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy']) model.fit(data, labels, batch_size=32, epochs=5) # Save entire model to a HDF5 file model.save('my_model.h5')# Recreate the exact same model, including weights and optimizer. model = tf.keras.models.load_model('my_model.h5')?
4、動態圖機制:Eager Execution
? ? ? 不同于TensorFlow的靜態機制。
- Eager Execution 是一種命令式編程環境,可立即評估操作。此環境對于Keras 并不是必需的,但是受tf.keras 的支持,并且可用于檢查程序和調試。
- 所有tf.keras 模型構建API 都與Eager Execution 兼容。雖然可以使用Sequential 和函數式API,但Eager Execution 對模型子類化和構建自定義層特別有用。
- 與通過組合現有層來創建模型的API 不同,函數式API 要求你編寫前向傳播代碼。
?
?
?
?
Keras的中的模型使用
1、查找使用方法
from keras.models import Sequential
model = Sequential()
help(model.compile)
(1)、model.compile()函數,用來配置訓練模型參數,可以指定你設想的隨機梯度下降中的網絡的損失函數、優化方式等參數(2)、model.summary()函數,Prints a string summary of the network.
(3)、model.fit_generator()函數,Fits the model on data generated batch-by-batch by a Python generator.The generator is run in parallel to the model, for efficiency.For instance, this allows you to do real-time data augmentation on images on CPU in parallel to training your model on GPU.
(4)、K.placeholder() ? ?#用于得到傳遞進來的真實的訓練樣本
?
2、Keras的?6 種預訓練模型?
? ? ? 目前可知,Keras 已經將這 6 種預訓練模型集成到了庫中: VGG16、VGG19、ResNet50、Inception v3、Xception、MobileNet。VGG 網絡以及從 2012 年以來的 AlexNet 都遵循現在的基本卷積網絡的原型布局:一系列卷積層、最大池化層和激活層,最后還有一些全連接的分類層。MobileNet 本質上是為移動應用優化后的 Xception 架構的流線型(streamline)版本。
?
3、Keras深度學習框架的注意事項(自動下載存放路徑等)、使用方法之詳細攻略
DL之Keras: Keras深度學習框架的注意事項(自動下載存放路徑等)、使用方法之詳細攻略
?
?
?
總結
以上是生活随笔為你收集整理的DL框架之Keras:深度学习框架Keras框架的简介、安装(Python库)、相关概念、Keras模型使用、使用方法之详细攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CV:利用cv2+dlib库自带fron
- 下一篇: Py之cx_Freeze:Python库