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

news2024/11/24 16:44:05

目录

  • 简介
  • 神经网络类型和用法总结
    • 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, Dense

x_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.coloradmin.cn/o/749326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树进阶(搜索二叉树)

目录 引言 1.二叉搜索树的模拟实现 1.1 链式二叉树的定义 1.2 二叉搜索树的模拟实现 1.2.1 二叉搜索树的结点类 1.2.2 二叉搜索树类的构造与中序遍历实现 1.2.3 增 1.非递归实现 2.非递归实现 1.2.4 查 1.非递归实现 2.递归实现 1.2.5 删 1.非递归实现 (1)情…

【无标题】visual studio2019+Qt5.15.2+PCL1.12.1+vtk9.1.0+cmake3.22.2

安装VS------安装Qt-------安装PCL------安装cmake-----安装VTK-----环境配置 安装用了两天时间 1环境搭建 1.1 Visual Studio 2019 (PCL所需版本) https://my.visualstudio.com/Downloads?qvisual%20studio%202019&wt.mc_idomsftvscom~older-downloads 1.2 Qt安装 …

MySQL为什么要使用B+树做索引?MySQL索引存储模型推演,B+树在MySQL的落地形式

文章目录 一、什么是索引1、索引初体验2、索引图解3、索引类型 二、索引存储模型推演1、二分查找2、二叉查找树(BST Binary Search Tree)3、平衡二叉树(AVL Tree)(左旋、右旋)(1)平衡…

openGauss学习笔记-08 openGauss 数据类型

文章目录 openGauss学习笔记-08 openGauss 数据类型8.1 数值类型8.2 布尔类型8.3 字符类型8.4 二进制类型8.5 日期/时间类型8.6 几何类型8.7 网络地址类型8.8 位串类型8.9 文本搜索类型8.10 UUID数据类型8.11 JSON/JSONB类型8.12 HLL数据类型8.13 范围类型8.14 索引8.15 对象标…

C++笔记之虚析构函数的作用

C笔记之虚析构函数的作用 C中的虚析构函数用于确保通过基类指针删除派生类对象时,能正确调用派生类的析构函数,从而释放派生类对象所占用的资源。 在C中,析构函数用于释放对象所占用的资源,并进行清理操作。它与类的构造函数相对…

飞书ChatGPT机器人 – 打造智能问答助手

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话,在下面操作步骤中…

spring cloud 之 Hystrix

Hystrix概述 Hystrix是一个供分布式系统使用,提供延迟和容错功能,保证复杂的分布系统在面临不可避免的失败是时,仍具有弹性。 当服务器A调用服务器B时,如果服务器B宕机,则服务器A不去调用。当服务器B在时间范围内未响…

Unity物理相关组件——2D关节

一:前言 关节组件用来模拟物体与物体之间的连接关系,必须依赖于刚体组件 二:Hinge Joint 2D 用于实现链条物体、钟摆等物体的模拟 ——Enable Collision:是否开启碰撞 ——Connected Rigid Body:关联的刚体&#xff0…

rocketmq使用mqtt协议

文章目录 前言一、安装rocketmq二、打包rocketmq-mqtt三、配置rocketmq-mqtt四、初始化操作五、启动六、测试 前言 rocketmq从4.9.3开始,可以兼容mqtt协议,需要安装编译一个rocketmq-mqtt工程,参考:https://rocketmq.apache.org/…

Java设计模式之结构型-享元模式(UML类图+案例分析)

目录 一、基本概念 二、UML类图 三、角色设计 四、案例分析 1、基本实现 2、游戏角色 五、总结 一、基本概念 享元模式是一种结构型设计模式,主要用于减少创建大量相似对象所占用的内存,它通过共享技术来有效支持大量细粒度的对象。 二、UML类图…

【动态规划算法】-简单多状态题型(11-18题)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你…

微信小程序(二)

目录 1、input标签 一、表单绑定 1、数据绑定 2、输入获取 二、网络请求 1、介绍 2、注意 3、使用 4、基于Promise封装 三、自定义组件 1、创建 2、父向子组件通信 3、子向父组件通信 4、生命周期 四、vant weapp组件库 1、配置 2、使用 进入本章前的拓展&#…

宇宙的尽头是银行?聊聊在银行做软件测试的那些事

从一家工作了5年的软件公司的测试管理者跳槽到**银行做软件测试,短短2个月,对银行测试有了初步认识,总结和记录下来,加深个人的理解,同时也共享给各位。 银行作为大家的理财顾问,对金钱非常敏感&#xff0…

118、仿真-基于51单片机的直流电压电流控制系统设计(Proteus仿真+程序等)

方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元…

想冲嵌入式,学这套教程

今天,给大家带来一套非常前沿的视频教程!有多前沿?诸君,请听我一一道来: 众所周知,现在嵌入式空前火热,随着AI驾驶、智能机器人、智能制造、智慧家居等智能软硬件的飞速发展,嵌入式已…

PLC工作者的工作待遇现状如何?

PLC工作者的工作待遇通常会受到多个因素的影响,包括地理位置、经验水平、行业需求以及个人技能等。 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个6 在一般情况下,PLC工作者通常拥有较高的技术水平和专业知识,因此他们…

关于自学\跳槽\转行做网络安全行业的一些建议

很好,如果你是被题目吸引过来的,那请看完再走,还是有的~ 为什么写这篇文章 如何自学入行?如何小白跳槽,年纪大了如何转行等类似问题 ,发现很多人都有这样的困惑。下面的文字其实是我以前的一个回答&#…

pnpm改造替换npm

Q: 为什么要迁移pnpm? 相比于npm,pnpm有一些优势: 更快的安装速度: 在安装包时,pnpm使用了硬链接的方式,将已安装的包链接到新的目录下,而不是复制或下载包。这样,当你安装一个包的不同版本或者…

LLM - DataCollatorForLanguageModeling 样本生成 by transformers

目录 一.引言 二.生成样本 By API 1.样本处理样式 2.DataCollatorForLanguageModeling 2.1 样本准备 2.2 API 生成 三.生成样本 By DIY 1.样本准备 2.data_colloator 实现 3.使用自定义 data_colloator 四.总结 一.引言 前面我们讲了 Baichuan7B 的 lora 微调步骤&a…

2023年7月广州/惠州/深圳软考信息系统项目管理师报名

信息系统项目管理师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资…