淺談keras 的抽象后端(from keras import backend as K)
keras后端簡介:
Keras 是一個模型級庫,為開發(fā)深度學(xué)習(xí)模型提供了高層次的構(gòu)建模塊。它不處理諸如張量乘積和卷積等底層操作,目的也就是盡量不重復(fù)造輪子。
但是底層操作還是需要的, 所以keras 依賴于一個專門的、優(yōu)化的張量操作庫來完成這個操作。
我們可以簡單的認(rèn)為這是 Keras 的「后端引擎」, keras 有三個后端實現(xiàn)可用 、 即: TensorFlow 后端,Theano 后端,CNTK 后端。
如果你需要修改你的后端, 只要將字段 backend 更改為 theano 或 cntk,Keras 將在下次運行 Keras 代碼時使用新的配置。
你也可以定義環(huán)境變量 KERAS_BACKEND,這會覆蓋配置文件中定義的內(nèi)容:
定義的方式如下。
KERAS_BACKEND=tensorflow python -c “from keras import backend” Using
TensorFlow backend.
在 Keras 中,可以加載比 “tensorflow”, “theano” 和 “cntk” 更多的后端, 即可以選擇你自己所定義的后端。
Keras 也可以使用外部后端,這可以通過更改 keras.json 配置文件和 “backend” 設(shè)置來執(zhí)行。
假設(shè)您有一個名為 my_module 的 Python 模塊,您希望將其用作外部后端。keras.json 配置文件將更改如下:
{ “image_data_format”: “channels_last”, “epsilon”: 1e-07, “floatx”: “float32”, “backend”: “my_package.my_module” }
必須驗證外部后端才能使用,有效的后端必須具有以下函數(shù):placeholder, variable and function.
如果由于缺少必需的條目而導(dǎo)致外部后端無效,則會記錄錯誤,通知缺少哪些條目。
下面我們來看一下 keras 的 json 文件中其他的一些更加詳細(xì)的配置;
The keras.json 配置文件包含以下設(shè)置, 你可以通過編輯 $ HOME/.keras/keras.json 來更改這些設(shè)置。
{ “image_data_format”: “channels_last”, “epsilon”: 1e-07, “floatx”: “float32”, “backend”: “tensorflow” }
第一個參數(shù) image_data_format 的可選參數(shù)為 : “channels_last” 或者 “channels_first”,當(dāng)然, 從名字中你就可以看出他們的作用是什么;
如果是 tensorflow作為后端, 那么就應(yīng)當(dāng)是channel last , 也就是輸入的tensor的shape (height, width, channels);
如果是 theano, 那么就是 channel first。
epsilon: 浮點數(shù),用于避免在某些操作中被零除的數(shù)字模糊常量。
floatx: 字符串,“float16”, “float32”, 或 “float64”。默認(rèn)浮點精度。
backend: 字符串, “tensorflow”, “theano”, 或 “cntk”。
使用抽象 Keras 后端:
如果你希望你編寫的 Keras 模塊與 Theano (th) 和 TensorFlow (tf) 兼容,則必須通過抽象 Keras 后端 API 來編寫它們。
你可以通過以下方式導(dǎo)入后端模塊:
from keras import backend as K
下面是后端使用的一些介紹:
這段代碼實例化一個輸入占位符。它等價于 tf.placeholder() 或 th.tensor.matrix(), th.tensor.tensor3(), 等等。
inputs = K.placeholder(shape=(2, 4, 5)) inputs = K.placeholder(shape=(None, 4, 5)) inputs = K.placeholder(ndim=3)
也就是說你一旦引用了 keras 的 backed, 那么大多數(shù)你需要的張量操作都可以通過統(tǒng)一的Keras后端接口完成,
而不關(guān)心具體執(zhí)行這些操作的是Theano還是TensorFlow。
下面的代碼實例化一個變量。它等價于 tf.Variable() 或 th.shared()。
import numpy as np val = np.random.random((3, 4, 5)) var = K.variable(value=val) var = K.zeros(shape=(3, 4, 5)) var = K.ones(shape=(3, 4, 5))
你需要的大多數(shù)張量操作都可以像在 TensorFlow 或 Theano 中那樣完成:
b = K.random_uniform_variable(shape=(3, 4), low=0, high=1) # 均勻分布 c = K.random_normal_variable(shape=(3, 4), mean=0, scale=1) # 高斯分布 d = K.random_normal_variable(shape=(3, 4), mean=0, scale=1)
以上這篇淺談keras 的抽象后端(from keras import backend as K)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python內(nèi)置函數(shù)hex()的實現(xiàn)示例
這篇文章主要介紹了Python內(nèi)置函數(shù)hex()的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Python?xlwt工具使用詳解,生成excel欄位寬度可自適應(yīng)內(nèi)容長度
這篇文章主要介紹了Python?xlwt工具使用詳解,生成excel欄位寬度可自適應(yīng)內(nèi)容長度,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Django在Win7下的安裝及創(chuàng)建項目hello word簡明教程
這篇文章主要介紹了Django在Win7下的安裝及創(chuàng)建項目hello word,需要的朋友可以參考下2014-07-07解決運行django程序出錯問題 ''str''object has no attribute''_meta''
這篇文章主要介紹了解決運行django程序出錯問題 'str'object has no attribute'_meta',具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python爬蟲小例子——爬取51job發(fā)布的工作職位
這篇文章主要介紹了Python爬取51job發(fā)布的工作職位,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)Python,感興趣的朋友可以了解下2020-07-07pycharm終端無法激活conda環(huán)境的解決辦法
如果您在PyCharm終端中無法激活conda環(huán)境,可能是由于PyCharm沒有正確配置conda解釋器,這篇文章主要給大家介紹了關(guān)于pycharm終端無法激活conda環(huán)境的解決辦法,需要的朋友可以參考下2023-09-09