Keras 模塊

2021-10-22 10:00 更新

正如我們之前了解到的,Keras 模塊包含對(duì)深度學(xué)習(xí)算法有用的預(yù)定義類、函數(shù)和變量。本章讓我們學(xué)習(xí) Keras 提供的模塊。

可用模塊

讓我們先看看 Keras 中可用的模塊列表。

  • 初始化 提供初始化函數(shù)列表。我們可以在 Keras 層 章節(jié)中詳細(xì)了解它。在機(jī)器學(xué)習(xí)的模型創(chuàng)建階段。
  • 正則化器 提供正則化器功能列表。我們可以在 Keras 層 章節(jié)中詳細(xì)了解它。
  • 約束 提供約束功能列表。我們可以在 keras 層 章節(jié)中詳細(xì)了解它。
  • 激活器 提供激活器功能列表。我們可以在 keras 層 章節(jié)中詳細(xì)了解它。
  • 損失 提供損失函數(shù)列表。我們可以在模型編譯章節(jié)中詳細(xì)了解它。
  • 指標(biāo) 提供指標(biāo)功能列表。我們可以在模型編譯章節(jié)中詳細(xì)了解它。
  • 優(yōu)化器 提供優(yōu)化器功能列表。我們可以在模型編譯章節(jié)中詳細(xì)了解它。
  • 回調(diào) 提供回調(diào)函數(shù)列表。我們可以在訓(xùn)練過程中使用它來打印中間數(shù)據(jù)以及根據(jù)某些條件停止訓(xùn)練本身(EarlyStopping方法)。
  • 文本處理 提供將文本轉(zhuǎn)換為適合機(jī)器學(xué)習(xí)的 NumPy 數(shù)組的功能。我們可以在機(jī)器學(xué)習(xí)的數(shù)據(jù)準(zhǔn)備階段使用它。
  • 圖像處理 提供將圖像轉(zhuǎn)換為適合機(jī)器學(xué)習(xí)的 NumPy 數(shù)組的功能。我們可以在機(jī)器學(xué)習(xí)的數(shù)據(jù)準(zhǔn)備階段使用它。
  • 序列處理- 提供從給定輸入數(shù)據(jù)生成基于時(shí)間的數(shù)據(jù)的功能。我們可以在機(jī)器學(xué)習(xí)的數(shù)據(jù)準(zhǔn)備階段使用它。
  • 后端- 提供后端庫的功能,如TensorFlow和Theano。
  • 公用程序 提供許多在深度學(xué)習(xí)中有用的效用函數(shù)。

讓我們看看本章中的后端模塊utils模型。

后端模塊

后端模塊: 用于 keras 后端操作。默認(rèn)情況下,keras 在 TensorFlow 后端之上運(yùn)行。如果需要,您可以切換到其他后端,如 Theano 或 CNTK。默認(rèn)后端配置在根目錄中的.keras/keras.json文件下定義。

可以使用以下代碼導(dǎo)入Keras后端模塊:

>>> from keras import backend as k

如果我們使用默認(rèn)后端TensorFlow,則以下函數(shù)將返回基于TensorFlow的信息,如下所示:

>>> k.backend() 
'tensorflow'
>>> k.epsilon() 
1e-07
>>> k.image_data_format() 
'channels_last'
>>> k.floatx() 
'float32'

讓我們簡(jiǎn)要了解一些用于數(shù)據(jù)分析的重要后端功能: get_uid() 它是默認(rèn)圖形的標(biāo)識(shí)符,定義如下:

>>> k.get_uid(prefix='') 
1 
>>> k.get_uid(prefix='') 2

重置用戶名

它用于重置 uid 值。

>>> k.reset_uids()

現(xiàn)在,再次執(zhí)行g(shù)et_uid(),這將會(huì)被重置為1:

>>>k.get_uid(prefix='')

占位符

它用于實(shí)例化占位符張量,保持 3-D 形狀的簡(jiǎn)單占位符如下所示:

>>> data = k.placeholder(shape = (1,3,3)) 
>>> data
<tf.Tensor 'Placeholder_9:0' shape = (1, 3, 3) dtype = float32>
If you use int_shape(), it will show the shape. 
>>> k.int_shape(data) (1, 3, 3)

dot

它用于將兩個(gè)張量相乘??紤]a和b是兩個(gè)張量,c將是ab相乘的結(jié)果。假設(shè)a形狀是(4,2),b形狀是(2,3)。它定義如下,

>>> a = k.placeholder(shape = (4,2)) 
>>> b = k.placeholder(shape = (2,3)) 
>>> c = k.dot(a,b) 
>>> c 
<tf.Tensor 'MatMul_3:0' shape = (4, 3) dtype = float32> 
>>>

ones

它用于將所有初始化為一個(gè)值。

>>> res = k.ones(shape = (2,2)) 
#print the value 
>>> k.eval(res) 
array([[1., 1.], [1., 1.]], dtype = float32)

batch_dot

用于批量執(zhí)行兩個(gè)數(shù)據(jù)的乘積。輸入維度必須為 2 或更高。如下所示:

>>> a_batch = k.ones(shape = (2,3)) 
>>> b_batch = k.ones(shape = (3,2)) 
>>> c_batch = k.batch_dot(a_batch,b_batch) 
>>> c_batch 
<tf.Tensor 'ExpandDims:0' shape = (2, 1) dtype = float32>

transpose

它用于初始化變量。讓我們?cè)谶@個(gè)變量中執(zhí)行簡(jiǎn)單的轉(zhuǎn)置操作。

>>> data = k.variable([[10,20,30,40],[50,60,70,80]]) 
#variable initialized here 
>>> result = k.transpose(data) 
>>> print(result) 
Tensor("transpose_6:0", shape = (4, 2), dtype = float32) 
>>> print(k.eval(result)) 
   [[10. 50.] 
   [20. 60.] 
   [30. 70.] 
   [40. 80.]]

如果你想從 numpy 訪問

>>> data = np.array([[10,20,30,40],[50,60,70,80]]) 


>>> print(np.transpose(data)) 
   [[10 50] 
   [20 60] 
   [30 70] 
   [40 80]] 


>>> res = k.variable(value = data) 
>>> print(res) 
<tf.Variable 'Variable_7:0' shape = (2, 4) dtype = float32_ref>

is_sparse(tensor)

它用于檢查張量是否稀疏。

>>> a = k.placeholder((2, 2), sparse=True) 


>>> print(a) SparseTensor(indices =
   Tensor("Placeholder_8:0", 
   shape = (?, 2), dtype = int64), 
   values = Tensor("Placeholder_7:0", shape = (?,), 
   dtype = float32), dense_shape = Tensor("Const:0", shape = (2,), dtype = int64)) 
>>> print(k.is_sparse(a)) True

to_dense()

它用于將稀疏轉(zhuǎn)換為密集。

>>> b = k.to_dense(a) 
>>> print(b) Tensor("SparseToDense:0", shape = (2, 2), dtype = float32) 
>>> print(k.is_sparse(b)) False

random_uniform_variable

它用于使用 均勻分布 概念進(jìn)行初始化。

k.random_uniform_variable(shape, mean, scale)
  • shape 表示元組格式的行和列。
  • mean 均勻分布的平均值。
  • scale 均勻分布的標(biāo)準(zhǔn)偏差。

讓我們看看下面的示例用法:

>>> a = k.random_uniform_variable(shape = (2, 3), low=0, high = 1) 
>>> b = k. random_uniform_variable(shape = (3, 2), low = 0, high = 1) 
>>> c = k.dot(a, b) 
>>> k.int_shape(c) 
(2, 2)

工具模塊

utils為深度學(xué)習(xí)提供了有用的實(shí)用程序功能。utils模塊提供的一些方法如下:

HDF5矩陣

它用于表示 HDF5 格式的輸入數(shù)據(jù)。

from keras.utils import HDF5Matrix data = HDF5Matrix('data.hdf5', 'data')

to_categorical

它用于將類向量轉(zhuǎn)換為二進(jìn)制類矩陣。

>>> from keras.utils import to_categorical 
>>> labels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> to_categorical(labels) 
array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], 
   [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.], 
   [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.], 
   [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.], 
   [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.], 
   [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.], 
   [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.], 
   [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.], 
   [0., 0., 0., 0., 0., 0., 0., 0., 1., 0.], 
   [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]], dtype = float32)
>>> from keras.utils import normalize 
>>> normalize([1, 2, 3, 4, 5]) 
array([[0.13483997, 0.26967994, 0.40451992, 0.53935989, 0.67419986]])

print_summary(打印摘要)

它用于打印模型的摘要。

from keras.utils import print_summary print_summary(model)

plot_model(繪圖模型)

它用于以點(diǎn)格式創(chuàng)建模型表示并將其保存到文件。

from keras.utils import plot_model 
plot_model(model,to_file = 'image.png')

plot_model將生成圖像以了解模型的性能。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)