Keras - 模型编译
-
简述
之前,我们研究了如何使用 Sequential 和 Functional API 创建模型的基础知识。本章介绍如何编译模型。编译是创建模型的最后一步。编译完成后,我们可以进入训练阶段。让我们学习一些需要更好地理解编译过程的概念。 -
损失
在机器学习中,损失函数用于发现学习过程中的错误或偏差。Keras 在模型编译过程中需要损失函数。Keras 在损失模块中提供了相当多的损失函数,它们如下 -- mean_squared_error
- mean_absolute_error
- mean_absolute_percentage_error
- mean_squared_logarithmic_error
- squared_hinge
- hinge
- categorical_hinge
- logcosh
- huber_loss
- categorical_crossentropy
- sparse_categorical_crossentropy
- binary_crossentropy
- kullback_leibler_divergence
- poisson
- cosine_proximity
- is_categorical_crossentropy
以上所有损失函数都接受两个参数 --
y_true - 作为张量的真实标签
-
y_pred - 与y_true形状相同的预测
在使用损失函数之前导入损失模块,如下所示 - -
优化器
在机器学习中,优化是一个重要的过程,它通过比较预测和损失函数来优化输入权重。Keras 提供了相当多的优化器作为一个模块,优化器如下:SGD - 随机梯度下降优化器。RMSprop - RMSProp 优化器。Adagrad -Adagrad 优化器。Adadelta -Adadelta 优化器。Adam - Adam 优化器。Adamax - Adam 的 Adamax 优化器。我希望- Nester 的 Adam 优化器。在使用优化器之前导入优化器模块,如下所示 - -
指标
在机器学习中,Metrics用于评估模型的性能。它类似于损失函数,但不用于训练过程。Keras 提供了相当多的指标作为模块,指标,它们如下- 准确性
- binary_accuracy
- 分类准确度
- sparse_categorical_accuracy
- top_k_categorical_accuracy
- sparse_top_k_categorical_accuracy
- cosine_proximity
- 克隆度量
与损失函数类似,指标也接受以下两个参数 --
y_true - 作为张量的真实标签
-
y_pred - 与y_true形状相同的预测
在使用如下指定的指标之前导入指标模块 - -
编译模型
Keras 模型提供了一个方法,compile()来编译模型。compile()方法的参数和默认值如下重要的论点如下 -- 损失函数
- 优化器
- 指标
编译模式的示例代码如下 -说明,-
损失函数设置为mean_squared_error
-
优化器设置为sgd
-
指标设置为metrics.categorical_accuracy
-
模型训练
模型由 NumPy 数组使用fit()进行训练。此拟合函数的主要目的是用于评估您的训练模型。这也可以用于绘制模型性能。它具有以下语法 -说明-
X, y - 这是一个评估数据的元组。
-
epochs - 在训练期间不需要评估模型的次数。
-
batch_size - 训练实例。
让我们以一个简单的 numpy 随机数据示例来使用这个概念。创建数据
让我们在下面提到的命令的帮助下使用 numpy 为 x 和 y 创建一个随机数据 -现在,创建随机验证数据,创建模型
让我们创建简单的顺序模型 -添加图层
创建图层以添加模型 -编译模型
现在模型已定义。您可以使用以下命令进行编译 -应用拟合()
现在我们应用fit()函数来训练我们的数据 - -
-
创建多层感知器 ANN
我们已经学会了创建、编译和训练 Keras 模型。让我们应用我们的学习并创建一个简单的基于 MPL 的 ANN。数据集模块
在创建模型之前,我们需要选择一个问题,需要收集所需的数据并将数据转换为 NumPy 数组。收集数据后,我们可以准备模型并使用收集的数据对其进行训练。数据收集是机器学习中最困难的阶段之一。Keras 提供了一个特殊的模块,即数据集,用于下载用于训练目的的在线机器学习数据。它从在线服务器获取数据,处理数据并将数据作为训练和测试集返回。让我们检查一下 Keras 数据集模块提供的数据。模块中可用的数据如下,- CIFAR10小图像分类
- CIFAR100小图像分类
- IMDB电影评论情感分类
- 路透社新闻专线主题分类
- MNIST 手写数字数据库
- Fashion-MNIST 时尚文章数据库
- 波士顿房价回归数据集
让我们使用手写数字(或 minst)的 MNIST 数据库作为我们的输入。minst 是 60,000 张 28x28 灰度图像的集合。它包含 10 位数字。它还包含 10,000 张测试图像。下面的代码可用于加载数据集 -说明-
第 1 行从 keras 数据集模块导入minst 。
-
第 3 行调用load_data函数,该函数将从在线服务器获取数据并将数据作为 2 个元组返回,第一个元组(x_train, y_train)表示训练数据的形状为(number_sample, 28, 28),其数字标签为形状(number_samples, )。第二个元组(x_test, y_test)表示具有相同形状的测试数据。
其他数据集也可以使用类似的 API 获取,每个 API 也返回类似的数据,除了数据的形状。数据的形状取决于数据的类型。创建模型
让我们选择一个简单的多层感知器 (MLP),如下所示,并尝试使用 Keras 创建模型。该模型的核心特征如下 --
输入层由 784 个值(28 x 28 = 784)组成。
-
第一个隐藏层,Dense由 512 个神经元和“relu”激活函数组成。
-
第二个隐藏层,Dropout的值为 0.2。
-
第三个隐藏层,同样 Dense 由 512 个神经元和“relu”激活函数组成。
-
第四个隐藏层,Dropout的值为 0.2。
-
第五层和最后一层由 10 个神经元和“softmax”激活函数组成。
-
使用categorical_crossentropy作为损失函数。
-
使用RMSprop()作为优化器。
-
使用准确性作为指标。
-
使用 128 作为批量大小。
-
使用 20 作为 epoch。
第 1 步 - 导入模块让我们导入必要的模块。第 2 步 - 加载数据让我们导入 mnist 数据集。第 3 步 - 处理数据让我们根据我们的模型更改数据集,以便将其输入到我们的模型中。说明-
reshape用于将输入从 (28, 28) 元组重塑为 (784, )
-
to_categorical用于将向量转换为二进制矩阵
第 4 步 - 创建模型让我们创建实际模型。第 5 步 - 编译模型让我们使用选定的损失函数、优化器和指标来编译模型。第 6 步 - 训练模型让我们使用fit()方法训练模型。 -
最后的想法
我们已经创建了模型,加载了数据并将数据训练到模型中。我们仍然需要评估模型并预测未知输入的输出,我们将在下一章学习。执行应用程序将提供以下内容作为输出 -