机器学习实战 | 深度学习初级项目学习和总结

目录

  • 简介
  • 神经网络类型和用法总结
    • 1. 卷积神经网络CNN
      • 特点
      • 结构
      • 用处
    • 2. 循环神经网络RNN
      • 特点
      • 结构
      • 用处
    • 3. 长短期记忆网络LSTM
      • 特点
      • 结构
      • 用处
  • 基于Keras的神经网络用法总结
    • 1. 创建
    • 2. 编译
    • 3. 训练
    • 4. 保存
    • 5. 预测

简介

准备写个系列博客介绍机器学习实战中的部分公开项目。首先从初级项目开始。


本文对机器学习实战三个初级项目中涉及的神经网络算法以及基于Keras的神经网络语法进行总结。

三个初级项目分别为:
第一篇:机器学习实战 | emojify 使用Python创建自己的表情符号(深度学习初级)
第二篇:机器学习实战 | MNIST手写数字分类项目(深度学习初级)
第三篇:机器学习实战 | 股票价格预测项目(深度学习初级)

神经网络类型和用法总结

这三个初级项目中分别用了卷积神经网络CNN和长短期记忆神经网络LSTM。此外,为了更好的解释LSTM神经网络,这里还给出了LSTM网络的基础——循环神经网络RNN的介绍。
因此本文共介绍CNN、RNN和LSTM这三种神经网络的特点和用法。

参考网址:

  1. 四种基本的神经网络架构
  2. 机器学习-常用八大神经网络框架
  3. 机器学习系列 | ML需要了解的十大神经网络架构
  4. 深度学习-常见神经网络

1. 卷积神经网络CNN

特点

卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。

在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。

在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。
卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。
共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。

子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。

结构

在这里插入图片描述
当输入图像被送入卷积神经网络后,先后要循环通过卷积层、激励层和池化层,最后从全连接层输出分类结果。除了卷积层,卷积网络通常也以池化层(pooling layer)为特色。

  • 输入层
    输入数据,通常会做一些数据处理,例如去均值、归一化等。

  • 卷积层
    卷积层是卷积神经网络的核心部分,参数是一个或多个随机初始化的核函数,核函数就像按照灯一样,逐行逐列扫描输入图像。
    扫描完毕后计算出的所有卷积结果可以构成一个矩阵,这个新的矩阵叫特征映射(feature map)。卷积层得到的特征一般会送到激励层处理。

  • 激励层
    主要作用是将卷积层的结果做非线性映射。
    常见的激励层函数有sigmoid、tanh、Relu、Leaky Relu、ELU、Maxout。

  • 池化层
    在连续的卷基层和激励层中间,用于压缩数据和参数的量,用于减少过拟合。
    简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。
    常见的最大池化做法就是将特征映射划分为若干个矩形区域,挑选每个区域中的最大值。

  • 全连接层
    两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部,输出分类结果。

卷积神经网络的作用是逐层提取输入对象的特征,训练采用的也是反向传播的方法,参数的不断更新能够提升图像特征提取的精度。

用处

卷积神经网络主要是用于图像处理,也可以用于其他数据类型的处理,如音频文件。

2. 循环神经网络RNN

在这里插入图片描述

特点

卷积神经网络具有空间上的参数共享的特性,可以让同样的核函数应用在图像的不同区域。输出时只考虑前一个输入的影响,而不考虑不同时刻输入的影响。

把参数共享调整到时间维度上,让神经网络使用相同权重系数来处理具有先后顺序的数据,得到的就是循环神经网络。

循环神经网络(Recurrent Neural Network),也可以表示递归神经网络(Recursive Neural Network)。

  • 时间
    循环神经网络引入了“时间”的维度,适用于处理时间序列类型的数据。
    循环神经网络就是将长度不定的输入分割为等长的小块,再使用相同的权重系统进行处理,从而实现对变长输入的计算与处理。

  • 记忆
    循环神经网络t时刻的输出取决于当前时刻的输入,也取决于网络前一时刻t-1甚至更早的输出。
    从这个意义上来讲,循环神经网络引入了反馈机制,因而具有了记忆功能。
    记忆功能使循环神经网络能够提取来自序列自身的信息,输入序列的内部信息存储在神经网络的隐藏层中,并随着时间的推移在隐藏层中流转。

结构

RNN的基本结构包括输入层、隐藏层和输出层。
隐藏层的状态会随时间步更新,并作为下一时间的输入之一。
这种循环连接使得RNN具有记忆能力,能够捕捉序列中数据的依赖关系。

用处

RNN是一种专门处理序列数据的神经网络结构,它的特点是具有循环连接,能够在网络中传递信息,从而捕捉序列中的时序依赖关系。

RNN可用于处理文本数据、时间序列数据、语音信号等。

3. 长短期记忆网络LSTM

特点

RNN通过在时间共享参数引入了记特性,从而可以将先前的信息应用在当前的任务上,可是这种记忆通常只有有限的深度。

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的。

LSTM可以像人的记忆中选择性地记住一些时间间隔更久远的信息,它会根据组成元素的特性,来判断不同信息是被遗忘或被记住继续传递下去。
LSTM就是实现长期记忆用的,实现任意长度的记忆。要求模型具备对信息价值的判断能力,结合自身确定哪些信息应该保存,哪些信息该舍弃,元还要能决定哪一部分记忆需要立刻使用。

结构

LSTM通常由下面4个模块组成:
在这里插入图片描述

  • 记忆细胞(memory cell)
    作用是存储数值或状态,存储的时限可以是长期也可以是短期

  • 输入门(input gate)
    决定哪些信息在记忆细胞中存储

  • 遗忘门(forget gate)
    决定哪些信息从记忆细胞中丢弃

  • 输出门(output gate)
    决定哪些信息从记忆细胞中输出

用处

由于独特的设计结构,LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。

基于Keras的神经网络用法总结

序贯型神经网络搭建-编译-训练全流程:

from keras.models import Sequential
from keras.layers import LSTM, Dropout, Densex_train = ***
y_train = ***model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1], 1)))
model.add(LSTM(units=50))
model.add(Dense(1))
"""
往下可以继续接神经网络结构。。。
"""model.compile(loss='mean_squared_error', optimizer='adam')model.fit(x_train, y_train, epochs=1, batch_size=1, verbose=2)model.save("saved_model.h5")

Sequential: 序贯模型,与函数式模型对立。from keras.models import Sequential, 序贯模型通过一层层神经网络连接构建深度神经网络。

add: 叠加网络层,输入参数可选为:

  • conv2D卷积神经网络层,
  • MaxPooling2D二维最大池化层,
  • Dropout随机失活层(防止过拟合),
  • Dense密集层(全连接FC层,在Keras层中FC层被写作Dense层)。

1. 创建

model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train_data.shape[1], 1)))
model.add(LSTM(units=50))
model.add(Dense(1))

2. 编译

model.compile(loss='mean_squared_error', optimizer='adam')

complie: 编译神经网络结构,输入参数包括:

  • loss,字符串结构,指定损失函数(包括MSE等);
  • optimizer,表示优化方式(优化器),用于控制梯度裁剪;
  • metrics,列表,用来衡量模型指标,表示评价指标。

3. 训练

model.fit(x_train, y_train, epochs=1, batch_size=1, verbose=2)

fit: 在搭建完成后,将数据送入模型进行训练。输入参数包括:

  • x:训练数据输入;
  • y:训练数据输出;
  • batch_size: batch样本数量,即训练一次网络所用的样本数;
  • epochs:迭代次数,即全部样本数据将被“轮”多少次,轮完训练停止;
  • verbose:可选训练过程中信息是否输出参数,0表示不输出信息,1表示显示进度条(一般默认为1),2表示每个epoch输出一行记录;

4. 保存

# 用法一
model.save("saved_model.h5")# 用法二
model.save_weights('emotion_model.h5')

save: 保存训练模型权重,训练成功后,会在源目录下保存***.h5文件,即为权重文件。

5. 预测

model.predict(x_test)

predict:利用训练好的模型权重lstm_model,对测试数据进行预测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/26650.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓开发错误记录

1、报错FATAL EXCEPTION: main 运行出现报错 原因:没有在AndroidManifest声明页面 声明实现应用部分可视化界面的 Activity,必须使用 AndroidManifest 中的 元素表示所有 Activity。系统不会识别和运行任何未进行声明的Activity。 如果在AndroidMainife…

90%的人都理解错了HTTP中GET与POST的区别

Get和Post是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是Get把参数包含在URL中,Post通过request body传递参数。 你可能自己写过无数个Get和Post请求,或者已经看过很多权威网站总结…

【Atcoder】 [ARC149D] Simultaneous Sugoroku

题目链接 Atcoder方向 Luogu方向 题目解法 首先可以观察到一个 s i m p l e simple simple 的性质:两个相反数每次移动到的位置也是相反数 同时因为坐标的范围较小,所以可以考虑维护一部分位置的信息,来推出其他与它对称的点的信息 首先维…

2. CSS3的新特性

2.1 CSS3的现状 ●新增的CSS3特性有兼容性问题, ie9才支持 ●移动端支持优于PC端 ●不断改进中 ●应用相对广泛 ●现阶段主要学习: 新增选择器和盒子模型以及其他特性 CSS3给我们新增了选择器,可以更加便捷,更加自由的选择目标元素: 1.属性选择器 2.结构伪类选择器…

Android之Intent

意图介绍 一个意图(Intent)对象包含了目标组件、动作、数据、类别、附加数据、标志六个部分。 目标组件 目标组件可以帮助应用发送显式意图调用请求。在创建Intent时,可以通过setComponent方法来设置一个组件,如: //设置组件 intent.setC…

【Linux C】fseek函数使用小结

0x00 前言 演示使用的Linux版本&#xff08;#cat /etc/issue&#xff09;&#xff1a;Ubuntu 18.04.6 LTS \n \l 最后更新日期&#xff1a;2023.7.17 0x01 fseek函数使用小结 1.函数描述 设置stream文件的位置指针偏移到指定位置1。 2.声明 #include <stdio.h> in…

ceph安装部署

Ceph 简介 存储基础 单机存储设备 单机存储的问题 分布式存储的类型 分布式存储&#xff08;软件定义的存储 SDS&#xff09; Ceph 架构 Ceph 核心组件 ​编辑 Pool中数据保存方式支持两种类型 OSD 存储后端 Ceph 数据的存储过程 Ceph 集群部署 基于 ceph-deploy …

Zookeeper集群

Zookeeper集群 一、Zookeeper 概述Ⅰ、Zookeeper 定义&#xff1a;Ⅱ、Zookeeper 工作机制Ⅲ、Zookeeper 特点Ⅳ、Zookeeper 数据结构Ⅴ、Zookeeper 应用场景Ⅵ、Zookeeper 选举机制 二、部署 Zookeeper 集群Ⅰ、安装前准备Ⅱ、安装Zookeeper 三、部署kafka 集群Ⅰ、下载安装包…

Fiddler抓包使用简介

目录 Fiddler简介 请求抓包 抓取PC端HTTPS请求 抓取移动端请求 请求查看 发送请求 Mock接口 断点调试 弱网模拟 请求重放 修改HOSTS 总结&#xff1a; Fiddler简介 Fiddler是一款免费的Windows平台的抓包工具&#xff0c;功能强大&#xff0c;使用简单。Fiddler抓…

IDEA运行TOMCAT出现404

就这种问题&#xff0c;每个人的原因都不一定一样&#xff0c;我出现这种问题的解决方法在这里记录一下。顺便把我的配置记录一下。 除了本文的问题&#xff0c;还有可能是默认打开的文件名错了&#xff0c;或者端口被占用。 软件版本IDEA2023 TOMCAT9 亲测&#xff1a;IDE…

C语言进阶之程序环境和预处理

程序环境和预处理 1. 程序的翻译环境和执行环境2. 详解编译链接2.1 翻译环境2.2 编译的几个阶段2.3 运行环境 3. 预处理详解3.1 预定义符号3.2 #define3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##3.2.5 带副作用的宏参数3.2.6 宏和函数对比…

「网络编程」应用层协议_ HTTPS协议学习及原理理解

「前言」文章内容大致是应用层协议的HTTPS协议讲解&#xff0c;续上篇HTTP协议。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、HTTPS协议介绍二、什么是"加密"三、为什么要加密四、常见的加密方式五、数据摘要 && 数据指纹六、…