Keras – 模型
正如前面所学,Keras模型代表了实际的神经网络模型。Keras提供了两种模式来创建模型,一种是简单易用的 Sequential API ,另一种是更加灵活和先进的 Functional API。 在本章中,让我们学习如何使用 顺序性 和 功能性 API创建模型。
Sequential
Sequential API 的核心思想是简单地将Keras层按顺序排列,因此,它被称为 序列式API。 大多数ANN也是按顺序排列层,数据按给定的顺序从一个层流向另一个层,直到数据最终到达输出层。
一个ANN模型可以通过简单地调用 Sequential() API来创建,具体方法如下
添加图层
要添加一个图层,只需使用Keras图层API创建一个图层,然后通过add()函数传递该图层,具体方法如下
这里,我们创建了一个输入层,一个隐藏层和一个输出层。
访问模型
Keras提供了一些方法来获取模型信息,如层、输入数据和输出数据。它们如下
- model.layer – 以列表形式返回模型的所有层。
- model.inputs – 以列表形式返回模型的所有输入张量。
- model.output – 以列表形式返回模型的所有输出张量。
序列化模型
Keras提供了将模型序列化为对象和json的方法,并在以后再次加载。它们如下
- get_config() – 将模型作为一个对象进行IR返回。
- from_config() – 它接受模型配置对象作为参数并相应地创建模型。
- to_json() – 将模型作为一个json对象返回。
>>> json_string = model.to_json()
>>> json_string '{"class_name": "Sequential", "config":
{"name": "sequential_10", "layers":
[{"class_name": "Dense", "config":
{"name": "dense_13", "trainable": true, "batch_input_shape":
[null, 8], "dtype": "float32", "units": 32, "activation": "linear",
"use_bias": true, "kernel_initializer":
{"class_name": "Vari anceScaling", "config":
{"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}},
"bias_initializer": {"class_name": "Zeros", "conf
ig": {}}, "kernel_regularizer": null, "bias_regularizer": null,
"activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}},
{" class_name": "Dense", "config": {"name": "dense_14", "trainable": true,
"dtype": "float32", "units": 64, "activation": "relu", "use_bias": true,
"kern el_initializer": {"class_name": "VarianceScaling", "config":
{"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}},
"bias_initia lizer": {"class_name": "Zeros",
"config": {}}, "kernel_regularizer": null, "bias_regularizer": null,
"activity_regularizer": null, "kernel_constraint" : null, "bias_constraint": null}},
{"class_name": "Dense", "config": {"name": "dense_15", "trainable": true,
"dtype": "float32", "units": 8, "activation": "linear", "use_bias": true,
"kernel_initializer": {"class_name": "VarianceScaling", "config":
{"scale": 1.0, "mode": "fan_avg", "distribution": " uniform", "seed": null}},
"bias_initializer": {"class_name": "Zeros", "config": {}},
"kernel_regularizer": null, "bias_regularizer": null, "activity_r egularizer":
null, "kernel_constraint": null, "bias_constraint":
null}}]}, "keras_version": "2.2.5", "backend": "tensorflow"}'
>>>
- model_from_json() – 接受模型的json表示并创建一个新的模型。
- to_yaml() – 返回模型为yaml字符串。
- model_from_yaml() – 接受模型的yaml表示并创建一个新的模型。
总结模型
了解模型是非常重要的阶段,可以正确地将其用于训练和预测目的。Keras提供了一个简单的方法,即总结,以获得关于模型及其层的全部信息。
上一节创建的模型摘要如下 −
训练和预测模型
模型为训练、评估和预测过程提供功能。它们如下 –
- 编译 – 配置模型的学习过程
-
装配– 使用训练数据训练模型
-
评估- -使用测试数据评估模型
-
预测 – 预测新输入的结果。
功能性API
序列式API用于逐层创建模型。功能性API是一种创建更复杂模型的替代方法。功能性模型,你可以定义多个共享层的输入或输出。首先,我们为模型创建一个实例,并连接到各层以访问模型的输入和输出。本节简要地解释了功能模型。
创建一个模型
使用下面的模块导入一个输入层
现在,使用下面的代码创建一个输入层,指定模型的输入尺寸形状。
使用以下模块定义输入层—
使用下面这行代码为输入添加密集层
使用以下模块定义模型
通过指定输入层和输出层,以功能化的方式创建一个模型。
创建一个简单模型的完整代码如下所示