ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Keras深度学习之分层概念

2021-07-21 12:31:18  阅读:214  来源: 互联网

标签:输出 训练 Keras 卷积 模型 分层 深度 LSTM 输入


3.1 多层感知层简介

3.1.1 链接输入、输出的Dense层

Dense(8,input_dim=4,activation='relu')

  • 第一个参数:输出神经元的个数

  • input_dim:输入神经元的个数

  • activation:激活函数

    • linear:默认值,输入神经元与权重计算得到的结果值

    • relu:主要用于隐藏层。rectifier函数

    • sigmoid:sigmoid函数,主要用于二元分类问题的输出层中

    • softmax:softmax函数,主要用于多分类问题的输出层中

Dense层不受输入神经元个数的限制,可自由设定输出神经元的个数

3.2搭建多层感知神经网络模型

深度学习为什么需要随机种子

基于随机种子来实现代码中的随机方法,能够 保证多次运行此段代码能够得到完全一样的结果,即保证结果的 可复现性,这样 别人跑你的代码的时候也能够很好地复现出你的结果。

3.2.1 设置模型训练过程

model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])

  • loss:用于评价权重设定的代价函数

  • optimizer:搜索最优权重的优化算法

  • metrics:衡量指标

3.2.2 训练函数

  • 第一个参数:输入变量

  • 第二个参数:输出变量。也就是标签值

  • epochs:指定对整体训练数据集进行训练的循环次数

  • batch_size:对权重进行更新的batch大小

3.2.3 模型评价

scores = model.evaluate(x_test,y_test)
print("%s: %.2f%%" %(model.metrics_name[1],scores[1]*100))

3.3卷积神经网络分层

3.3.1 过滤特征显著的卷积层

keras中主要用于图像处理的是Conv2D层,多用于图像识别,同时具有过滤功能

  • 第一个参数:卷积过滤器个数

  • 第二个参数:卷积内核的(行,列)

  • padding:定义补边方法

    • valid:只输出有效区域(因此输出图像小于原图像)

    • same:输出图像与原图像大小相同

  • input_shape:定义除样本数量之外的输入格式,只有模式中的第一层需要定义

    • 通过(行,列,信道)定义。黑白图像的信道为1,彩色的信道为3

  • activation:设置激活函数

    • linear:默认值,直接输出输入神经元与权重计算结果

    • relu:rectifier函数

    • sigmoid

    • softmax

过滤器即为权重

如果将过滤器换为3个2*2的过滤器。则输出图像的个数也变为3个。总权重数量为12个(3乘2乘2)。

注意

  • 虽然权重为2乘2乘3=12个,过滤器个数为一个(是卷积核在输入图像3个信道分别做卷积,再将3个信道结果加起来得到一个卷积输出),输出信道个数为1(与过滤器数量同步

3.3.2 忽略细微变化的最大池化层

从卷积层的输出图像中抓取主要参数,输出更小的图像

  • pool_size:定义垂直、水平的缩小比例。((2,2)表示输出图像的大小为1输入图像的一半)

3.3.3 将视频一维化的Flatten层

在卷积神经网络模型中,反复通过卷积层或最大池化层提取主要特征后,会传送给全连接层进行训练。

从卷积层和最大池化层提取的信息是二维的,但需要转化为一维才能传送给全连接层

3.4搭建卷积神经网络模型

 

运行结果

3.5卷积神经网络模型数据增强

提高卷积神经网络模型性能方法(之一)-------- 数据增强

适用场合:

当训练集数量不足不能充分反映测试集样本特征时,使用这种方法可以提高模型的性能

3.5.1 现实问题

不能由模型开发者生成测试集。

首先查看运用现有模型挑战测试集数据的结果,然后利用有限的训练集样本,考虑到最多的可能性,对数据进行增强处理。

3.5.2 数据增强

Keras中提供的ImageDataGenerator函数可以用于数据增强

3.6循环神经网络模型

keras中提供的循环神经网络层主要有SimpleRNN、GRU、LSTM

3.6.1 能够记忆长序列的LSTM层

  • 第一个参数:存储单元数量(决定了存储容量大小和输出形态)

  • input_dim:输入属性的个数

  • input_length:系列数据的输入长度

  • return_sequences:是否输出序列

  • stateful:是否维持内部状态

3.7搭建循环神经网络模型

3.7.1 准备序列数据

  • 音阶比句子更容易编码
  • 是时间序列数据
  • 输出结果可以以乐谱形式查看
  • 可以将模型训练的结果演奏成音乐

3.7.2 生成数据集

由于不能进行输入/输出,由字母和数字组成的音符需要进行预处理,将每个代码转换为数字。

3.7.3 训练过程

我们训练模型的目标是输入前四个音符,模型就能够演奏全曲

  • 将第1~4个音符作为数据,第5个音符作为标签值,对模型进行训练
  • 之后将第2~5个音符作为数据,第6个音符作为标签值,对模型进行训练
  • 一次类推,每次递进一个音符,直至训练完全曲

3.7.4 预测过程

两种预测方法:一步预测全局预测

  • 一步预测

    是指输入四个原音符后预测下一个符标,并反复此过程

  • 全曲预测

    是指仅输入初始四个音符即可预测全曲。

    这种预测方法中,完成前面部分的预测后,将预测值作为输入值,用来输出下一个预测值。

    缺点

    如果中间出现失误,那么后面的音程和节奏出现失误的可能性会很高,也就是说,预测误差会累积。

3.7.5 多层感知器神经网络模型

3个Dense层

3.7.6 标准LSTM模型

  • 模型由一个具有128个存储单元的LSTM层和Dense层组成
  • 输入样本量50个,时间步4个,属性1个
  • stateful模式未激活
  • 时间步

    时间步是一个样本中包含的序列个数,与input_length相同

在多层感知器神经网络模型中,4个音符对应输入4个属性,而LSTM中,4个音符对应输入4个序列,此处的属性个数为1

不足:

全曲预测中,中间部分发生失误后,对全部预测结果产生影响,整体结果并不理想

3.7.7 Stateful LSTM模型

处理长序列数据时,Stateful LSTM模型可以发挥其优势。因为将长序列数据按样本单位进行分割训练时,由于状态的记忆功能,LSTM内部可以记忆有效的训练状态,同时丢弃无效记忆

在训练时,需要考虑状态初始化。(在一些情况下,不能将当前样本的额训练状态作为下一个样本训练时的初始状态,就需要进行初始化操作。在状态传递过程中,如果当前样本与下一个样本之间不存在顺序关系,就不能维持状态,所以必须进行初始化设置)

初始化情况

  • 完成最后一次样本训练后,模型系统运行新一轮训练周期,对新样本进行训练时,需要将状态初始化

  • 同一个训练周期内部存在多个序列数据时,在对新的序列数据集进行训练之前,需要对状态进行初始化

结果:

全曲预测结果完全正确

3.7.8 多种输入属性的模型结构

将c4分解为(c,4)两个属性输入(将音程和音符分解为两个属性输入)

人类在识谱时,也是将音符分解为两部分识别的,可以说这种学习方式更接近于人类的认知方式

结果

运行的预测结果与原曲完全相同

按训练效率排序

多层感知器神经网络模型>标准LSTM模型>Stateful LSTM模型(一个属性)>Stateful LSTM模型(两个属性)

标签:输出,训练,Keras,卷积,模型,分层,深度,LSTM,输入
来源: https://blog.csdn.net/bgbgssh1314/article/details/118963590

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有