Keras - 模块


正如我们之前了解到的,Keras 模块包含对深度学习算法有用的预定义类、函数和变量。本章我们来学习Keras提供的模块。

可用模块

让我们首先看看 Keras 中可用的模块列表。

  • 初始化器- 提供初始化器函数列表。我们可以在Keras层章节详细学习。在机器学习的模型创建阶段。

  • 正则化器- 提供正则化器功能列表。我们可以在Keras Layers章节中详细了解它。

  • 约束- 提供约束函数列表。我们可以在Keras Layers章节中详细了解它。

  • 激活- 提供激活器功能列表。我们可以在Keras Layers章节中详细了解它。

  • 损失- 提供损失函数列表。我们可以在模型训练章节详细了解。

  • 指标- 提供指标函数列表。我们可以在模型训练章节详细了解。

  • 优化器- 提供优化器功能列表。我们可以在模型训练章节详细了解。

  • 回调- 提供回调函数列表。我们可以在训练过程中使用它来打印中间数据以及根据某些条件停止训练本身( EarlyStopping方法)。

  • 文本处理- 提供将文本转换为适合机器学习的 NumPy 数组的函数。我们可以在机器学习的数据准备阶段使用它。

  • 图像处理- 提供将图像转换为适合机器学习的 NumPy 数组的函数。我们可以在机器学习的数据准备阶段使用它。

  • 序列处理- 提供从给定输入数据生成基于时间的数据的功能。我们可以在机器学习的数据准备阶段使用它。

  • Backend - 提供后端库的功能,如TensorFlowTheano

  • 实用程序- 提供许多在深度学习中有用的实用函数。

让我们在本章中看看后端模块和utils模型。

后端模块

backend模块用于 keras 后端操作。默认情况下,keras 在 TensorFlow 后端运行。如果需要,您可以切换到其他后端,例如 Theano 或 CNTK。默认后端配置在根目录中的 .keras/keras.json 文件下定义。

可以使用以下代码导入Keras后端模块

>>> from keras import backend as k

如果我们使用默认后端TensorFlow,则以下函数将返回基于TensorFlow的信息,如下所示 -

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

让我们简要了解一些用于数据分析的重要后端函数 -

获取uid()

它是默认图表的标识符。它的定义如下 -

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

重置用户ID

它用于重置 uid 值。

>>> k.reset_uids()

现在,再次执行get_uid()。这将被重置并再次更改为 1。

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

占位符

它用于实例化占位符张量。保存 3D 形状的简单占位符如下所示 -

>>> 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)

它用于将两个张量相乘。考虑 a 和 b 是两个张量,c 将是 ab 相乘的结果。假设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> 
>>>

那些

它用于将所有内容初始化为一个值。

>>> res = k.ones(shape = (2,2)) 

#print the value 

>>> k.eval(res) 
array([[1., 1.], [1., 1.]], dtype = float32)

批处理点

用于批量执行两个数据的乘积。输入维度必须为 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>

多变的

它用于初始化变量。让我们对此变量执行简单的转置操作。

>>> 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(张量)

它用于检查张量是否稀疏。

>>> 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()

它用于将稀疏转换为密集。

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

随机均匀变量

它用于使用均匀分布概念进行初始化。

k.random_uniform_variable(shape, mean, scale)

这里,

  • shape - 表示元组格式的行和列。

  • 平均值- 均匀分布的平均值。

  • 尺度- 均匀分布的标准差。

让我们看一下下面的示例用法 -

>>> 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为深度学习提供了有用的实用函数。utils模块提供的一些方法如下 -

HDF5矩阵

它用于表示 HDF5 格式的输入数据。

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

分类

它用于将类向量转换为二进制类矩阵。

>>> 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)

绘图模型

它用于创建点格式的模型表示并将其保存到文件中。

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

plot_model将生成图像以了解模型的性能。