Keras – 模块
正如我们之前所了解的那样,Keras模块包含了预定义的类、函数和变量,对深度学习算法非常有用。让我们在本章中学习Keras所提供的模块。
可用的模块
让我们首先看看Keras中可用的模块列表。
- 初始化器– 提供初始化器函数的列表。我们可以在机器学习的模型创建阶段 , 在Keras 层章节 中详细了解它。
-
正则器 – 提供了一个正则器函数列表。我们可以在 Keras层 章节中详细了解它。
-
约束 – 提供了一个约束函数的列表。我们可以在 Keras Layers 章节中详细了解它。
-
激活 – 提供激活器函数的列表。我们可以在 Keras Layers 章节中详细了解它。
-
Losses – 提供损失函数的列表。我们可以在 模型训练 章节中详细了解它。
-
Metrics – 提供了一个度量函数列表。我们可以在 模型训练 一章中详细了解它。
-
优化器 – 提供优化器函数的列表。我们可以在 模型训练 一章中详细了解它。
-
回调 – 提供回调函数的列表。我们可以在训练过程中使用它来打印中间数据,也可以根据一些条件来停止训练( EarlyStopping 方法)。
-
文本处理 – 提供了将文本转换成适合机器学习的NumPy数组的函数。我们可以在机器学习的数据准备阶段使用它。
-
图像处理 – 提供了将图像转换成适合机器学习的NumPy数组的函数。我们可以在机器学习的数据准备阶段使用它。
-
序列处理 – 提供了从给定的输入数据生成基于时间的数据的函数。我们可以在机器学习的数据准备阶段使用它。
-
后台 – 提供后台库的功能,如 TensorFlow 和 Theano。
-
实用工具 – 提供了很多在深度学习中有用的实用功能。
让我们看看本章中的 后台 模块和 实用工具 模型。
backend模块
**backend 模块 **用于Keras的后台操作。默认情况下,Keras运行在TensorFlow的后端之上。如果你愿意,你可以切换到其他后端,如Theano或CNTK。Defualt后端配置是在你的根目录下.keras/keras.json文件中定义的。
Keras backend模块可以通过以下代码导入
>>> from keras import backend as k
如果我们使用默认的后端 TensorFlow ,那么下面的函数将返回基于 TensorFlow 的信息,如下图所示。
>>> k.backend()
'tensorflow'
>>> k.epsilon()
1e-07
>>> k.image_data_format()
'channels_last'
>>> k.floatx()
'float32'
让我们简单了解一下用于数据分析的一些重要的后台函数 –
get_uid()
它是默认图形的标识符。它的定义如下
>>> k.get_uid(prefix='')
1
>>> k.get_uid(prefix='') 2
reset_uids
它用于重设uid值。
>>> k.reset_uids()
现在,再次执行 get_uid()。 这将被重置并再次变为1。
>>> k.get_uid(prefix='')
1
占位符
它被用来实例化一个占位符张量。简单的占位符用来保持3-D形状,如下图所示。
>>> 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>
>>>
ones
它用于初始化所有为 一个 值。
>>> res = k.ones(shape = (2,2))
#print the value
>>> k.eval(res)
array([[1., 1.], [1., 1.]], dtype = float32)
batch_dot
它用于分批执行两个数据的乘积。输入维度必须是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(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()
它用于将稀疏数据转换为密集数据。
>>> 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 – 以图元的格式表示行和列。
-
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模块
utils 为深度学习提供了有用的实用功能。 ** utils** 模块提供的一些方法如下-
HDF5Matrix
它是用来表示HDF5格式的输入数据的。
from keras.utils import HDF5Matrix data = HDF5Matrix('data.hdf5', 'data')
to_categorical
它用于将类向量转换为二进制类矩阵。
>>> 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
它用于创建点格式的模型表示,并将其保存到文件中。
from keras.utils import plot_model
plot_model(model,to_file = 'image.png')
这个 plot_model 将生成一个图像来了解模型的性能。