正如我們之前了解到的,Keras 模塊包含對(duì)深度學(xué)習(xí)算法有用的預(yù)定義類、函數(shù)和變量。本章讓我們學(xué)習(xí) Keras 提供的模塊。
讓我們先看看 Keras 中可用的模塊列表。
讓我們看看本章中的后端模塊和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)
它用于將兩個(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>
>>>
它用于將所有初始化為一個(gè)值。
>>> res = k.ones(shape = (2,2))
#print the value
>>> k.eval(res)
array([[1., 1.], [1., 1.]], dtype = float32)
用于批量執(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>
它用于初始化變量。讓我們?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>
它用于檢查張量是否稀疏。
>>> 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
它用于將稀疏轉(zhuǎn)換為密集。
>>> b = k.to_dense(a)
>>> print(b) Tensor("SparseToDense:0", shape = (2, 2), dtype = float32)
>>> print(k.is_sparse(b)) False
它用于使用 均勻分布 概念進(jìn)行初始化。
k.random_uniform_variable(shape, mean, scale)
讓我們看看下面的示例用法:
>>> 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 格式的輸入數(shù)據(jù)。
from keras.utils import HDF5Matrix data = HDF5Matrix('data.hdf5', 'data')
它用于將類向量轉(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]])
它用于打印模型的摘要。
from keras.utils import print_summary print_summary(model)
它用于以點(diǎn)格式創(chuàng)建模型表示并將其保存到文件。
from keras.utils import plot_model
plot_model(model,to_file = 'image.png')
此plot_model將生成圖像以了解模型的性能。
更多建議: