《Keras深度学习实战》—2.7 序贯模型

举报
华章计算机 发表于 2019/06/15 12:38:05 2019/06/15
【摘要】 本节书摘来自华章计算机《Keras深度学习实战》一书中的第2章,第2.7节,作者是拉蒂普·杜瓦(Rajdeep Dua)[印] 曼普里特·辛格·古特(Manpreet Singh Ghotra) 著 罗 娜 祁佳康 译.

2.7 序贯模型

可以通过将多个层堆叠并传递给Sequential的构造函数来创建序贯模型。

怎么做

创建基本序贯模型涉及指定一个或多个层。

创建序贯模型

我们将创建一个包含四层的序贯网络。

1.第1层是全连接层(稠密层),其input_shape为(*,784),output_shape为(*,32)。

稠密层是一个根据一定规则密集连接的神经网络层,实现操作:output = activation(dot(input,kernel)+ bias)。其中激活函数(activation)是传递激活参数的函数,核(kernel)是由层创建的权重矩阵,偏差(bias)是层创建的偏差向量(仅当use_bias为True时才适用)。

2.第2层是激活层,将tanh激活函数用于激活输入张量:

 image.png

Activation也可以作为参数应用于稠密层:

 image.png

3.第3层是一个稠密层,输出为(*,10)。

4.第4层具有应用softmax函数的Activation:

 image.png

在数学中,softmax函数也称为归一化指数函数,是逻辑函数的泛化,它将一个含任意实数的K维向量z压缩到另一个K维实向量σ(z)。其中每个元素都在(0~1)范围内,所有元素加起来为1。如以下公式所示:

 

 image.png

image.png

5.创建的模型如下:

 image.png

Sequential是Model的子类,还有一些其他方法将会在后续章节进行介绍。

编译模型

编译模型:

 image.png

有关每个参数含义的详细信息,请参阅文档https://keras.io/models/sequential/#the-sequential-model-api。

训练模型

此方法用于以指定次数(数据集上的迭代)训练模型:

 image.png

有关每个参数含义的详细信息,请参阅文档https://keras.io/models/sequential/#the- sequential-model-api。

评估模型

evaluate方法用于评估模型指标,使用批处理完成:

 image.png

模型预测

调用以下predict  API进行预测,它返回一个numpy数组:

 image.png

接下来给出一个结合使用这些API的实例。

把它们结合

我们将使用皮马印第安人糖尿病数据集。

该数据集最初来自美国糖尿病、消化系统和肾脏疾病研究所,目标是使用数据集中包括的测量值来诊断性地预测患者是否患有糖尿病。不过这些数据集有一定的局限性,例如,数据集中的所有患者都是大于21岁的女性皮马印第安人。数据集由若干医学预测变量和一个目标变量(结果)组成,预测变量包括患者的怀孕次数、BMI、胰岛素水平、年龄等。

 image.png

 image.png

数据集的形状为(768,9)。

数据集的值包括:

 image.png

X的值,为第0到第7列:

 image.png

Y的值是数据集的第8列,如下图所示:

 image.png

模型内部检验

通过在调试器中进行模型检验,可以在调用compile方法之前得到如下模型属性:

 image.png

 

模型内部编译

调用model.compile()时后台会进行如下操作:

从后端获得优化器。

以下是支持的优化器列表:

 image.png

初始化损失函数

所用的损失函数是二元交叉熵损失。

交叉熵损失(也称为对数损失)用于测量模型的性能(分类模型),其输出是介于0~1之间的概率值,随着预测概率偏离实际值的程度变化而变化:

image.png

 

初始化所有输出的内部变量:

 image.png

设置模型目标:

 image.png

设置样本权重:

在编译之前,将以下值分配给样本权重和sample_weight_modes:

 image.png

运行代码后,它会初始化为以下值:

 image.png

设置指标:

接下来,我们设置指标名称和metrics_tensors,用于存储实际指标:

 image.png

计算总损失和指标:

计算损失并添加到self.metrics_tensors:

 image.png

接下来,计算嵌套指标和nested_weighted_metrics:

 image.png

初始化测试、训练和预测函数:

全部惰性初始化:

 image.png

对可训练权重进行排序:

最后,我们初始化可训练的权重:

 image.png

模型训练

调用model.fit进行模型训练,执行以下步骤。

数据验证:

将validation_data传递给Keras模型时,它必须包含两个参数(x_val,y_val)或三个参数(x_val,y_val和val_sample_weights)。

模型输出

上述代码中模型指标的最终输出显示如下:

image.png

image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。