当前位置: 首页 > news >正文

神经网络基础-神经网络补充概念-25-深层神经网络

简介

深层神经网络(Deep Neural Network,DNN)是一种具有多个隐藏层的神经网络,它可以用来解决复杂的模式识别和特征学习任务。深层神经网络在近年来的机器学习和人工智能领域中取得了重大突破,如图像识别、自然语言处理、语音识别等。

重要概念

多隐藏层:
深层神经网络具有多个隐藏层,这些隐藏层可以用来提取不同层次的特征。每一层的神经元可以将前一层的输出作为输入,并对数据进行更高级的抽象和特征学习。

特征学习:
深层神经网络通过逐层的特征学习,可以自动地从原始数据中提取出更加抽象和有意义的特征。每一层的权重和偏差都在训练过程中进行调整,以便更好地捕捉数据中的模式和信息。

非线性激活函数:
深层神经网络使用非线性的激活函数(如ReLU、Sigmoid、Tanh等)来引入非线性变换,从而使网络能够处理更加复杂的关系和模式。

前向传播和反向传播:
深层神经网络的训练过程包括前向传播和反向传播。前向传播用于计算预测值,并计算损失函数,而反向传播用于计算梯度并更新权重和偏差,以减小损失函数。

优化算法:
训练深层神经网络通常使用各种优化算法,如梯度下降法、随机梯度下降法、Adam等。这些算法有助于寻找损失函数的最小值,并使网络的性能逐渐提升。

过拟合问题:
深层神经网络容易出现过拟合问题,特别是在数据量较少的情况下。为了避免过拟合,常常会采用正则化、Dropout等技术。

深度学习框架:
为了便于搭建和训练深层神经网络,许多深度学习框架(如TensorFlow、PyTorch、Keras等)被开发出来,提供了丰富的工具和接口来支持深度神经网络的构建和训练。

代码实现

import numpy as np# Sigmoid 激活函数及其导数
def sigmoid(x):return 1 / (1 + np.exp(-x))def sigmoid_derivative(x):return x * (1 - x)# 初始化参数
def initialize_parameters(layer_dims):parameters = {}L = len(layer_dims)  # 层数for l in range(1, L):parameters['W' + str(l)] = np.random.randn(layer_dims[l], layer_dims[l - 1]) * 0.01parameters['b' + str(l)] = np.zeros((layer_dims[l], 1))return parameters# 前向传播
def forward_propagation(X, parameters):caches = []A = XL = len(parameters) // 2  # 神经网络层数for l in range(1, L):Z = np.dot(parameters['W' + str(l)], A) + parameters['b' + str(l)]A = sigmoid(Z)caches.append((Z, A))Z = np.dot(parameters['W' + str(L)], A) + parameters['b' + str(L)]AL = sigmoid(Z)caches.append((Z, AL))return AL, caches# 计算损失
def compute_loss(AL, Y):m = Y.shape[1]cost = -np.sum(Y * np.log(AL) + (1 - Y) * np.log(1 - AL)) / mreturn cost# 反向传播
def backward_propagation(AL, Y, caches):grads = {}L = len(caches)m = AL.shape[1]Y = Y.reshape(AL.shape)dAL = - (np.divide(Y, AL) - np.divide(1 - Y, 1 - AL))current_cache = caches[L - 1]dZL = dAL * sigmoid_derivative(current_cache[1])grads['dW' + str(L)] = np.dot(dZL, caches[L - 2][1].T) / mgrads['db' + str(L)] = np.sum(dZL, axis=1, keepdims=True) / mfor l in reversed(range(L - 1)):current_cache = caches[l]dZ = np.dot(parameters['W' + str(l + 2)].T, dZL) * sigmoid_derivative(current_cache[1])grads['dW' + str(l + 1)] = np.dot(dZ, caches[l][1].T) / mgrads['db' + str(l + 1)] = np.sum(dZ, axis=1, keepdims=True) / mdZL = dZreturn grads# 更新参数
def update_parameters(parameters, grads, learning_rate):L = len(parameters) // 2for l in range(L):parameters['W' + str(l + 1)] -= learning_rate * grads['dW' + str(l + 1)]parameters['b' + str(l + 1)] -= learning_rate * grads['db' + str(l + 1)]return parameters# 主函数
def deep_neural_network(X, Y, layer_dims, learning_rate, num_iterations):np.random.seed(42)parameters = initialize_parameters(layer_dims)for i in range(num_iterations):AL, caches = forward_propagation(X, parameters)cost = compute_loss(AL, Y)grads = backward_propagation(AL, Y, caches)parameters = update_parameters(parameters, grads, learning_rate)if i % 100 == 0:print(f'Iteration {i}, Cost: {cost:.4f}')return parameters# 示例数据
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]).T
Y = np.array([[0, 1, 1, 0]]).T# 定义网络结构和超参数
layer_dims = [2, 4, 4, 1]  # 输入层维度、隐藏层维度、输出层维度
learning_rate = 0.1
num_iterations = 10000# 训练深层神经网络
parameters = deep_neural_network(X, Y, layer_dims, learning_rate, num_iterations)# 预测
predictions, _ = forward_propagation(X, parameters)
print('Predictions:', predictions)

相关文章:

神经网络基础-神经网络补充概念-25-深层神经网络

简介 深层神经网络(Deep Neural Network,DNN)是一种具有多个隐藏层的神经网络,它可以用来解决复杂的模式识别和特征学习任务。深层神经网络在近年来的机器学习和人工智能领域中取得了重大突破,如图像识别、自然语言处…...

MySQL— 基础语法大全及操作演示!!!(上)

MySQL—— 基础语法大全及操作演示(上) 一、MySQL概述1.1 、数据库相关概念1.1.1 MySQL启动和停止 1.2 、MySQL 客户端连接1.3 、数据模型 二、SQL2.1、SQL通用语法2.2、SQL分类2.3、DDL2.3.1 DDL — 数据库操作2.3.1 DDL — 表操作 2.4、DML2.4.1 DML—…...

[golang gin框架] 46.Gin商城项目-微服务实战之后台Rbac客户端调用微服务权限验证以及Rbac微服务数据库抽离

一. 根据用户的权限动态显示左侧菜单微服务 1.引入 后台Rbac客户端调用微服务权限验证功能主要是: 登录后显示用户名称、根据用户的权限动态显示左侧菜单,判断当前登录用户的权限 、没有权限访问则拒绝,参考[golang gin框架] 14.Gin 商城项目-RBAC管理,该微服务功能和上一节[g…...

域名和ip的关系

域名和ip的关系 一:什么是域名 域名,简称域名、网域,是由一串用点分隔的名字组成的上某一台计算机或计算机组的名称,用于在数据传输时标识 计算机的电子方位(有时也指地理位置)。网域名称系统,有时也简称为域名…...

excel日期函数篇1

1、DAY(serial_number):返回序列数表示的某月的天数 在括号内给出一个时间对象或引用一个时间对象(年月日),返回多少日 下面结果都为20 2、MONTH(serial_number):返回序列数表示的某年的月份 在括号内给出一个时间对…...

Leetcode151 翻转字符串中的单词

给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格…...

PHP FTP的相关函数及简单使用示例

简介 FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身。 PHP FTP函数是通过文件传输协议提供对文件服务器的客户端访问,FTP函数用于打开、登陆以及关闭连接,也用于上传、下载、重命名、删除以及获取服务器上文件信息。 安装 …...

高光谱 | 矿物识别和分类标签数据制作、农作物病虫害数据分类、土壤有机质含量回归与制图、木材含水量评估和制图

本课程提供一套基于Python编程工具的高光谱数据处理方法和应用案例。 本课程涵盖高光谱遥感的基础、方法和实践。基础篇以学员为中心,用通俗易懂的语言解释高光谱的基本概念和理论,旨在帮助学员深入理解科学原理。方法篇结合Python编程工具,…...

【数据结构】二叉树篇| 纲领思路01+刷题

博主简介:努力学习的22级计算机科学与技术本科生一枚🌸博主主页: 是瑶瑶子啦每日一言🌼: 所谓自由,不是随心所欲,而是自我主宰。——康德 目录 一、二叉树刷题纲领二、刷题1、104. 二叉树的最大深度2、 二叉…...

系统架构设计师---计算机基础知识之数据库系统结构与规范化

目录 一、基本概念 二、 数据库的结构 三、常用的数据模型 概念数据模型...

PyCharm连接Docker中的容器(ubuntu)

一、为什么要用Pycharm链接Docker中的ubuntu 因为在进行深度学习的时候,基于windows系统在开发的过程中,老是出现很多问题,大多数是环境问题。 尽管安装了Conda,也不能很好的解决问题,使用ubuntu是最好的选择。 二、…...

安防视频汇聚平台EasyCVR视频监控综合管理平台H.265转码功能更新,新增分辨率配置的具体步骤

安防视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求,让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上,视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频云存储、视频存储…...

全平台数据(数据库)管理工具 DataCap 管理 Rainbond 上的所有数据库

DataCap是用于数据转换、集成和可视化的集成软件,支持多种数据源、文件类型、大数据相关数据库、关系数据库、NoSQL数据库等。通过该 DataCap 可以实现对多个数据源的管理,对数据源下的数据进行各种操作转换,制作数据图表,监控数据…...

“深入探究JVM内部机制:从字节码到实际执行“

标题:深入探究JVM内部机制:从字节码到实际执行 摘要:本文将深入探究Java虚拟机(JVM)的内部机制,从字节码的生成、类加载、字节码解释和即时编译等环节,详细介绍JVM是如何将Java程序的字节码转化…...

C++写文件,直接写入结构体

C写文件,直接写入结构体 以前写文件都是写入字符串或者二进制再或者就是一些配置文件,今天介绍一下直接写入结构体,可以在软件参数较多的时候直接进行读写,直接将整个结构体写入和读取,看代码: #include&…...

【Spring专题】Spring之Bean的生命周期源码解析——阶段二(二)(IOC之属性填充/依赖注入)

目录 前言阅读准备阅读指引阅读建议 课程内容一、依赖注入方式(前置知识)1.1 手动注入1.2 自动注入1.2.1 XML的autowire自动注入1.2.1.1 byType:按照类型进行注入1.2.1.2 byName:按照名称进行注入1.2.1.3 constructor:…...

线程|线程的使用、四种实现方式

1.线程的实现方式 1.用户级线程 开销小,用户空间就可以创建多个。缺点是:内核无法感知用户级多个线程的存在,把其当作只有一个线程,所以只会提供一个处理器。 2.内核级线程 相对于用户级开销稍微大一点,可以利用多…...

Facebook 应用未启用:这款应用目前无法使用,应用开发者已得知这个问题。

错误:Facebook 应用未启用:这款应用目前无法使用,应用开发者已得知这个问题。应用重新启用后,你便能登录。 「应用未经过审核或未发布」: 如果一个应用还没有经过Facebook的审核或者开发者尚未将应用发布,那么它将无法…...

(十八)大数据实战——Hive的metastore元数据服务安装

前言 Hive的metastore服务作用是为Hive CLI或者Hiveserver2提供元数据访问接口。Hive的metastore 是Hive元数据的存储和管理组件,它负责管理 Hive 表、分区、列等元数据信息。元数据是描述数据的数据,它包含了关于表结构、存储位置、数据类型等信息。本…...

ubuntu 22.04 LTS 在 llvm release/17.x 分支上编译 cookbook llvm example Chapter 02

一,从源码编译 llvm 下载源码: $ git clone https://github.com/llvm/llvm-project.git 创建 对应 commit id分支: $ cd llvm-project $ git checkout 5b78868661f42a70fa30 -b 17.x.greater 源码成功编译 llvm-project commit id&…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【JVM】- 内存结构

引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

如何为服务器生成TLS证书

TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

什么是VR全景技术

VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 ​二、实现思路 总体思路: 用户通过Gradio界面上…...