神经网络基础-神经网络补充概念-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)

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

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

相关文章

Windows环境下安装RabbitMQ

1.消息队列中间件简介 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性。 使用较多的消息队列有 ActiveMQ(安全)&…

【脚踢数据结构】队列(顺序和链式)

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,Linux基础,ARM开发板,软件配置等领域博主🌍快上🚘,一起学习,让我们成为一个强大的攻城狮!送给自己和读者的一句鸡汤🤔&…

Ant Design Vue 下拉框输入框 可以输入 可以查询

Ant Design Vue 下拉框 可以输入 可以查询 直接上代码 效果图 &#xff08;输入内容查询后端 返回下拉的值 &#xff0c;如何查询后端是空的直接 把输入的内容 赋值给 输入框&#xff09; 在这里插入图片描述 <template><div><a-selectv-model.lazy"i…

WPF CommunityToolkit.Mvvm

文章目录 前言ToolkitNuget安装简单使用SetProperty&#xff0c;通知更新RealyCommandCanExecute 新功能&#xff0c;代码生成器ObservablePropertyNotifyCanExecuteChangedForRelayCommand其他功能对应关系 NotifyPropertyChangedFor 前言 CommunityToolkit.Mvvm&#xff08;…

自适应AI chatgpt智能聊天创作官网html源码

我们致力于开发先进的自适应AI智能聊天技术&#xff0c;旨在为用户提供前所未有的聊天体验。通过融合自然语言处理、机器学习和深度学习等领域的顶尖技术&#xff0c;我们的智能聊天系统能够准确理解用户的需求并给出相应的回应。 我们的自适应AI智能聊天系统具备以下核心特点…

MySQL面试题二

1、关系型和非关系型数据库的区别&#xff1f; 关系型数据库的优点 容易理解&#xff0c;因为它采用了关系模型来组织数据。 可以保持数据的一致性。 数据更新的开销比较小。 支持复杂查询&#xff08;带 where 子句的查询&#xff09; 非关系型数据库&#xff08;NOSQL&#x…

fiddler抓包问题记录,支持https、解决 tunnel to 443

fiddler下载安装步骤及基本配置 fiddler抓包教程&#xff0c;如何抓取HTTPS请求&#xff0c;详细教程 可能遇到的问题及解决方案 1. 不能正常访问页面&#xff08;所有https都无法访问&#xff09; 解决方案&#xff1a;查看下面配置是否正确 Rules-customization 找到 OnB…

Vue中路由缓存问题及解决方法

一.问题 Vue Router 允许你在你的应用中创建多个视图&#xff0c;并根据路由来动态切换这些视图。默认情况下&#xff0c;当你从一个路由切换到另一个路由时&#xff0c;Vue Router 会销毁前一个路由的组件实例并创建新的组件实例。然而&#xff0c;有时候你可能希望保持一些页…

【推荐】深入浅出学习Spring框架【中】

目录 1.AOP是什么? 2.案列&#xff1a; 3.spring的aop的专业术语 4.代码模拟 4.1 前置通知 3.2.后置通知 3.3.环绕通知 3.4.异常通知 3.5.过滤通知 1.AOP是什么? 面向切面编程&#xff08;Aspect-Oriented Programming&#xff09;是一种编程范式&#xff0c;它的主要…

第十四届中国大学生服务外包大赛细品,上百支队伍与合合信息用AI共克“记账”难题

前言 熟悉我的小伙伴应该知道我在大学时期参与了很多竞赛&#xff0c;我向来对比赛是比较热枕的&#xff0c;以我个人观点&#xff0c;我认为可以通过竞赛激发学习激情和检验自己的技能水平掌握情况&#xff0c;大学生很少有机会能够了解到课堂之外市场的需求&#xff0c;外包…

P1123 取数游戏

取数游戏 题目描述 一个 N M N\times M NM 的由非负整数构成的数字矩阵&#xff0c;你需要在其中取出若干个数字&#xff0c;使得取出的任意两个数字不相邻&#xff08;若一个数字在另外一个数字相邻 8 8 8 个格子中的一个即认为这两个数字相邻&#xff09;&#xff0c;求…

JWT(JSON Web Token )令牌

1、介绍 jwt就是将原始的json数据格式进行了安全的封装&#xff0c;这样就可以直接基于jwt在通信双方安全的进行信息传输了。 2、jwt组成 第一部分&#xff1a;Header(头&#xff09;&#xff0c; 记录令牌类型、签名算法等。 例如&#xff1a;{"alg":"HS256…

EXCEL按列查找,最终返回该列所需查询序列所对应的值,VLOOKUP函数

EXCEL按列查找&#xff0c;最终返回该列所需查询序列所对应的值 示例&#xff1a;国标行业分类汉字&#xff0c;匹配id 使用VLOOKUP函数 第一参数&#xff1a;拿去查询的值。 第二参数&#xff1a;匹配的数据。 Ps&#xff1a;Sheet1!$C 21 : 21: 21:E 117 &#xff0c;需要…

Redis系列(三):深入解读Redis主从同步机制

首发博客地址 https://blog.zysicyj.top/ Redis高可靠靠什么保证&#xff1f; 为什么要提这个呢&#xff0c;因为Redis主从库目的呢其实就是为了实现高可靠。上篇文章中我们说过Redis的AOF、RDB日志其实就是为了减少数据丢失&#xff0c;这是高可靠的一部分。 这篇文章呢&#…

Lua 位和字节

一、位运算 从 Lua 5.3 版本开始&#xff0c;提供了针对数值类型的一组标准位运算符&#xff0c;与算数运算符不同的是&#xff0c;运算符只能用于整型数。 运算符描述&按位与|按位或&#xff5e;按位异或>>逻辑右移<<逻辑左移&#xff5e;&#xff08;一元运…

Git 如何使用TortoiseGit 操作本地仓库

初始化仓库 方法一: 新建一个文件夹,进入文件夹内部操作 1、右键--> 在这里创建Git 版本库 注意: 不要直接在桌面上操作,否则桌面就是一个仓库 方法二: 1、右键-->Git GUI here 方法三: 命令行模式 1、 git init 创建完毕仓库,我们发现,此时我们创建的文件夹下…

leetcode做题笔记83删除排序链表中的重复元素

给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2] 思路一&#xff1a;模拟题意 struct ListNode* deleteDuplicates(struct ListNode* head){i…

FreeRTOS qemu mps2-an385 bsp 移植制作 :系统运行篇

相关文章 FreeRTOS qemu mps2-an385 bsp 移植制作 &#xff1a;环境搭建篇 FreeRTOS qemu mps2-an385 bsp 移植制作 &#xff1a;系统启动篇 开发环境 Win10 64位 VS Code&#xff0c;ssh 远程连接 ubuntu VMware Workstation Pro 16 Ubuntu 20.04 FreeRTOSv202212.01&a…

React 全栈体系(二)

第二章 React面向组件编程 一、基本理解和使用 1. 使用React开发者工具调试 2. 效果 2.1 函数式组件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>1_函数式组件</title> </head> &l…

计算机竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python 爬虫与协同过滤的新闻推荐系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&…