【深度学习】最强算法之:深度神经网络(DNN)

news2024/11/15 13:25:15

深度神经网络

  • 1、引言
  • 2、深度神经网络
    • 2.1 定义
    • 2.2 原理
    • 2.3 实现方式
    • 2.4 算法公式
      • 2.4.1 前向传播公式
      • 2.4.2 反向传播公式
    • 2.5 代码示例
  • 3、总结

1、引言

小屌丝:鱼哥,我遇到难题了
小鱼:然后呢
小屌丝:你帮我看看呗?
小鱼:怎么看?
小屌丝:… 用眼睛看。
小鱼:这… 那咱就看看
在这里插入图片描述

小屌丝:… 你这是看啥,没让你看视力表
小鱼:我得先看看视力表, 以便我好选择用什么工具帮你看这个难题
小屌丝:我… 你随意
小鱼:你可不能干了, 不然,待会泡完澡谁结账啊。
小屌丝: 我…你…
小鱼:好了,我知道什么难题了,这就开整。
小屌丝:牛啊,牛啊,牛
小鱼:大河弯弯向东流,还是这么牛。

2、深度神经网络

2.1 定义

  • 深度神经网络(DNN)是一种由多个神经元层组成的人工神经网络模型。
  • 与传统的浅层神经网络相比,DNN具有更多的隐藏层,从而能够处理更复杂和抽象的特征。
  • DNN通过学习输入数据的表示,逐层提取特征,最终实现对数据的分类、回归等任务。

2.2 原理

DNN的核心原理在于通过多层神经元进行特征学习和抽象表示。
- 在DNN中,每个神经元都接收前一层所有神经元的输出,根据权重和激活函数对输入进行计算,并将结果传递给下一层神经元。
- 通过堆叠多个这样的层,DNN能够逐步提取输入数据中的高层次特征,从而实现对复杂数据的高效学习和处理。

DNN的训练过程通常使用反向传播算法。

  • 在训练过程中,DNN根据输入数据和期望输出之间的误差来调整网络参数,以使误差最小化。
  • 通过不断地优化网络参数,DNN能够逐渐提高模型的性能和泛化能力。

2.3 实现方式

DNN的实现方式主要依赖于深度学习框架,如TensorFlow、PyTorch等。这些框架提供了丰富的神经网络层和操作,使得构建和训练DNN变得相对简单。

在实现DNN时,

  • 首先需要定义网络结构,包括输入层、隐藏层和输出层的神经元数量以及激活函数等。
  • 其次,使用框架提供的API构建网络模型,并初始化网络参数。
  • 然后,准备训练数据集,并将数据输入到网络中进行训练。

在训练过程中,通过反向传播算法更新网络参数,直至模型收敛。

2.4 算法公式

DNN的算法公式主要包括前向传播和反向传播两部分。

  • 前向传播公式
  • 反向传播公式

2.4.1 前向传播公式

前向传播公式

  • 输入层到隐藏层的传播 ( z ( l ) = W ( l ) a ( l − 1 ) + b ( l ) ) (z^{(l)} = W^{(l)}a^{(l-1)} + b^{(l)}) (z(l)=W(l)a(l1)+b(l))
  • 隐藏层到输出层的传播 ( a ( l ) = σ ( z ( l ) ) ) (a^{(l)} = \sigma(z^{(l)})) (a(l)=σ(z(l)))

其中, ( l ) (l) (l) 表示层数, ( W ( l ) ) (W^{(l)}) (W(l)) ( b ( l ) ) (b^{(l)}) (b(l)) 分别表示第 ( l ) (l) (l) 层的权重和偏置, ( σ ) (\sigma) (σ) 表示激活函数, ( a ( l − 1 ) ) (a^{(l-1)}) (a(l1)) 表示前一层的输出, ( z ( l ) ) (z^{(l)}) (z(l)) 表示当前层的线性输出, ( a ( l ) ) (a^{(l)}) (a(l)) 表示当前层的激活输出。

2.4.2 反向传播公式

反向传播公式

  • 计算误差项 ( δ ( l ) = ∂ J ∂ z ( l ) = ( ( W ( l + 1 ) ) T δ ( l + 1 ) ⊙ σ ′ ( z ( l ) ) ) (\delta^{(l)} = \frac{\partial J}{\partial z^{(l)}} = ((W^{(l+1)})^T \delta^{(l+1)} \odot \sigma'(z^{(l)})) (δ(l)=z(l)J=((W(l+1))Tδ(l+1)σ(z(l)))
  • 更新权重和偏置 ( W ( l ) = W ( l ) − α ∂ J ∂ W ( l ) ) , ( b ( l ) = b ( l ) − α ∂ J ∂ b ( l ) ) (W^{(l)} = W^{(l)} - \alpha \frac{\partial J}{\partial W^{(l)}}),(b^{(l)} = b^{(l)} - \alpha \frac{\partial J}{\partial b^{(l)}}) (W(l)=W(l)αW(l)J)(b(l)=b(l)αb(l)J)

其中, ( J ) (J) (J) 表示损失函数, ( α ) (\alpha) (α) 表示学习率, ( ⊙ ) (\odot) () 表示逐元素相乘。

2.5 代码示例

# -*- coding:utf-8 -*-
# @Time   : 2024-03-15
# @Author : Carl_DJ

'''
实现功能:
    Python和TensorFlow实现简单DNN示例

'''
import tensorflow as tf  
  
# 定义模型参数  
input_size = 784  # 输入层神经元数量  
hidden_size = 128  # 隐藏层神经元数量  
num_classes = 10  # 输出层神经元数量(分类任务中的类别数)  
  
# 构建模型  
model = tf.keras.Sequential([  
    tf.keras.layers.Flatten(input_shape=(input_size,)),  
    tf.keras.layers.Dense(hidden_size, activation='relu'),  
    tf.keras.layers.Dense(num_classes, activation='softmax')  
])  
  
# 编译模型  
model.compile(optimizer='adam',  
              loss='sparse_categorical_crossentropy',  
              metrics=['accuracy'])  
  
# 训练模型  
model.fit(x_train, y_train, epochs=10, batch_size=32)  
  
# 评估模型  
loss, accuracy = model.evaluate(x_test, y_test)  
print('Test loss:', loss)  
print('Test accuracy:', accuracy)


解析

  • 首先定义了模型参数,包括输入层、隐藏层和输出层的神经元数量。
  • 然后,使用tf.keras.Sequential构建了一个包含两个全连接层的DNN模型。
    • 第一个全连接层使用ReLU激活函数,
    • 第二个全连接层使用Softmax激活函数进行多分类
    • 模型使用Adam优化器和稀疏类别交叉熵损失函数进行编译
  • 最后,我们使用训练数据对模型进行训练,并在测试数据上评估模型的性能。

运行结果示例

Epoch 1/10  
375/375 [==============================] - 4s 11ms/step - loss: 0.4985 - accuracy: 0.8550  
Epoch 2/10  
375/375 [==============================] - 4s 11ms/step - loss: 0.2614 - accuracy: 0.9142  
...  
Epoch 10/10  
375/375 [==========================] - 4s 11ms/step - loss: 0.1340 - accuracy: 0.9620  
  
157/157 [==============================] - 1s 6ms/step - loss: 0.1215 - accuracy: 0.9645  
Test loss: 0.1214522695541382  
Test accuracy: 0.9645

在这里插入图片描述

3、总结

深度神经网络(DNN)作为深度学习领域的一种重要算法,通过多层神经元对输入数据进行逐层特征提取和抽象表示,具有强大的学习和泛化能力。

DNN在图像识别、语音识别、自然语言处理等领域取得了显著成果,并持续推动着人工智能技术的发展。

通过理解DNN的定义、原理、实现方式、算法公式以及代码示例,我们可以更好地掌握这一算法,并应用于实际问题的解决中。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 企业认证金牌面试官
  • 多个名企认证&特邀讲师等
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注小鱼,学习机器学习领域的知识。

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

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

相关文章

sentinel热点参数流控

1、概念 热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。 2、示例 2.1、目的 对于如下的/get接口的参…

【CSS】flex弹性盒保持均分

通过Flex布局可以将容器均分&#xff0c;给每个小容器设置相同的flex-grow即可。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge">&…

Flink入门知识点汇总(一)

具体内容请看b站尚硅谷课程&#xff01; 32_Flink运行时架构_提交流程_Yarn应用模式_哔哩哔哩_bilibili Flink本身有状态机制&#xff0c;状态都存储在Flink内部结构中&#xff0c;无需集成Mysql等对于精确一次Exactly-once&#xff0c;Flink进行了相关的配置&#xff0c;无需像…

综合知识篇15-开发管理考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例…

CSS隐藏video标签中各种控件

1.edio标签加上controls会出现视频控件&#xff0c;如播放按钮、进度条、全屏、观看的当前时间、剩余时间、音量按钮、音量的控制条等等 <video type"video/mp4" src"" autoplay"" style"width: 400px; height: 300px;" id"e…

springboot-MybatisPlus

mybatisplus是来简化mybatis开发的&#xff0c;其中封装好了各种sql语句&#xff0c;我们直接调用即可&#xff0c;省略了编写mapper.xm映射文件的过程 MybatisPlus怎么来获取数据库表的信息&#xff1f; 默认以类型驼峰转下划线作为表名默认把id字段作为主键默认把变量名驼峰转…

eNSP--vlan技术

思路: 一、配置交换机与路由器, 二、通过DHCP 获取地址 单臂路由,实现访问要求,重点考察对vlan标签的处理和使用。 用到的接口有access,trunk,hybrid三种 (所有配置请以下图为准) 配置: 一、 sw1 sw1接口g0/0/1 指定access接口,属于vlan2; g0/0/2接口我们将它…

C#中解决字符串在编译后无法修改的情况

文章目录 一、配置文件二、使用方式对于.NET Framework应用程序&#xff08;使用app.config&#xff09;对于.NET Core和.NET 5/6应用程序&#xff08;使用appsettings.json&#xff09; 三、应用实例 一、配置文件 在C#等编程语言中&#xff0c;硬编码&#xff08;直接在代码…

#Linux(编写第一个命令)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;编写一个c程序然后将生成的可执行的文件加入环境变量或者放入bin目录中&#xff0c;即可在其他目录下调用&#xff08;之前编写的程序只能在…

深度学习 Lecture 4 Adam算法、全连接层与卷积层的区别、图计算和反向传播

一、Adam算法&#xff08;自适应矩估计&#xff09; 全名&#xff1a;Adapative Moment Estimation 目的&#xff1a;最小化代价函数&#xff08;和梯度下降一样&#xff09; 本质&#xff1a;根据更新学习率后的情况自动更新学习率的值(可能是自动增大&#xff0c;也可能是…

基于python+vue共享单车信息系统的设计与实现flask-django-php-nodejs

课题主要分为二大模块&#xff1a;即管理员模块和用户模块&#xff0c;主要功能包括&#xff1a;用户、区域、共享单车、单车租赁、租赁归还、报修信息、检修信息等&#xff1b;快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省…

酷开科技OTT大屏营销重构新生,让营销被看见

在过去的十年间&#xff0c;中国视听新媒体产业迎来了发展的黄金时代。这一时期&#xff0c;见证了视听新媒体业态的广泛涌现&#xff0c;它们不仅迅速成长和扩张&#xff0c;而且逐步走向了成熟。互联网电视的兴起&#xff0c;为消费者带来了多样化的视听内容享受方式&#xf…

【Linux多线程】线程的概念

【Linux多线程】线程的概念 目录 【Linux多线程】线程的概念Linux线程的概念什么是线程重新定义线程和进程 进程地址空间第四讲线程的优点线程的缺点线程异常线程的用途 Linux进程VS线程进程和线程关于进程线程的问题 Linux线程控制POSIX线程库创建线程如何给线程传参&#xff…

鸿蒙Harmony应用开发—ArkTS-全局UI方法(菜单)

在页面范围内关闭通过bindContextMenu属性绑定的菜单。 说明&#xff1a; 从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 ContextMenu.close 方法描述close(): void可以通过该方法在页面范围内关闭通过bindContextMenu给…

onlyoffice创建excel文档

前提 安装好onlyoffice然后尝试api开发入门 编写代码 <html> <head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"&…

3D高斯泼溅的崛起

沉浸式媒体领域正在以前所未有的速度发展&#xff0c;其中 3D 高斯溅射成为一项关键突破。 这项技术在广泛的应用中看起来非常有前景&#xff0c;并且可能会彻底改变我们未来创建数字环境以及与数字环境交互的方式。 在本文中&#xff0c;我们将通过与摄影测量和 NeRF 等前辈进…

数学建模(Topsis python代码 案例)

目录 介绍&#xff1a; 模板&#xff1a; 案例&#xff1a; 极小型指标转化为极大型&#xff08;正向化&#xff09;&#xff1a; 中间型指标转为极大型&#xff08;正向化&#xff09;&#xff1a; 区间型指标转为极大型&#xff08;正向化&#xff09;&#xff1a; 标…

低压MOS在无人机上的应用-REASUNOS瑞森半导体

一、前言 无人机的结构由机身、动力系统、飞行控制系统、链路系统、任务载荷等几个方面组成的。 无人机动力系统中的电机&#xff0c;俗称“马达”&#xff0c;是无人机的动力来源&#xff0c;无人机通过改变电机的转速来改变无人机的飞行状态。即改变每个电机的速度&#xf…

灵境矩阵:开启无代码写作新时代,AI智能平台引领创作潮流

灵境矩阵 “灵境杯”智能体创意大赛&#xff0c;瓜分百万超级奖励 在当今数字化快速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正逐渐渗透到我们生活的方方面面。从智能家居到自动驾驶&#xff0c;AI的应用领域不断扩大&#xff0c;而今天&#xff0c;我们…

在基于Android相机预览的CV应用程序中使用 OpenCL

查看&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV4.9.0在Android 开发简介 下一篇&#xff1a;在 MacOS 中安装 本指南旨在帮助您在基于 Android 相机预览的 CV 应用程序中使用 OpenCL ™。教程是为 Android Studio 20…