[深度学习] 门控循环单元GRU

门控循环单元(Gated Recurrent Unit, GRU)是一种用于处理序列数据的递归神经网络(Recurrent Neural Network, RNN)变体,它通过引入门控机制来解决传统RNN在处理长序列时的梯度消失问题。GRU与长短期记忆网络(LSTM)相似,但结构更为简化。以下是GRU的详细介绍:

1. GRU的结构

GRU由以下几个主要部分组成:

  • 重置门(reset gate):控制当前时间步的输入如何与之前的记忆结合,用于决定要丢弃多少过去的信息。
  • 更新门(update gate):控制上一时间步的记忆如何流入当前时间步的记忆,用于决定要保留多少过去的信息。

具体来说,GRU的计算过程如下:

2. 公式表示

假设xt是当前时间步的输入,ht−1​是上一时间步的隐状态,则GRU的更新过程可以用以下公式表示:

  1. 重置门(reset gate)
    在这里插入图片描述
  2. 更新门(update gate)
    在这里插入图片描述
  3. 候选隐状态(candidate hidden state)
    在这里插入图片描述
  4. 当前隐状态(current hidden state)
    在这里插入图片描述
    其中:
  • σ 是sigmoid激活函数。
  • tanh 是tanh激活函数。
  • W和U 是权重矩阵,b是偏置项。
  • ⊙ 表示元素乘法(Hadamard积)。

3. GRU的工作原理

  • 重置门rt:决定了多少过去的记忆需要被重置或忽略。重置门的值接近0时,意味着更多的过去信息被丢弃;值接近1时,意味着保留更多的过去信息。
  • 更新门zt:决定了当前时间步的记忆如何与之前的记忆进行权衡。更新门的值接近0时,更多的过去记忆被保留;值接近1时,更多的当前信息被引入。

4. GRU与LSTM的比较

  • 结构:GRU比LSTM结构更简单,LSTM有三个门(输入门、遗忘门和输出门),而GRU只有两个门(重置门和更新门)。
  • 参数:由于结构较为简化,GRU的参数量比LSTM少,因此在某些任务中计算效率更高。
  • 性能:在许多任务上,GRU与LSTM的表现相当,有时GRU甚至表现得更好,特别是在数据量较少的情况下。

5. 应用场景

GRU广泛应用于自然语言处理(NLP)、语音识别、时间序列预测等领域,尤其适合需要处理长序列数据的任务。

6. 实现示例

在TensorFlow中,可以使用tf.keras.layers.GRU来实现一个GRU层:

import tensorflow as tf
import numpy as np# 生成示例数据
# 输入序列(样本数量,时间步长,特征维度)
input_seq = np.random.randn(3, 5, 10).astype(np.float32)# 定义GRU模型
model = tf.keras.Sequential([tf.keras.layers.GRU(20, return_sequences=True, input_shape=(5, 10)),  # 隐状态维度为20tf.keras.layers.GRU(20)  # 第二个GRU层
])# 编译模型
model.compile(optimizer='adam', loss='mse')# 打印模型摘要
model.summary()# 生成示例标签(样本数量,输出维度)
output_seq = np.random.randn(3, 20).astype(np.float32)# 训练模型
model.fit(input_seq, output_seq, epochs=10)# 预测
predictions = model.predict(input_seq)
print(predictions)
代码解释
  1. 数据生成

    input_seq = np.random.randn(3, 5, 10).astype(np.float32)
    

    这里生成了一个随机的输入序列,假设有3个样本,每个样本有5个时间步,每个时间步有10个特征。

  2. 定义GRU模型

    model = tf.keras.Sequential([tf.keras.layers.GRU(20, return_sequences=True, input_shape=(5, 10)),tf.keras.layers.GRU(20)
    ])
    

    使用tf.keras.Sequential定义了一个简单的GRU模型。第一个GRU层的隐状态维度为20,并且返回所有时间步的输出。第二个GRU层的隐状态维度也为20,但只返回最后一个时间步的输出。

  3. 编译模型

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

    使用Adam优化器和均方误差损失函数来编译模型。

  4. 打印模型摘要

    model.summary()
    

    打印模型的摘要信息,以查看模型的结构和参数数量。

  5. 生成示例标签并训练模型

    output_seq = np.random.randn(3, 20).astype(np.float32)
    model.fit(input_seq, output_seq, epochs=10)
    

    生成与输入序列匹配的随机标签,并使用这些标签来训练模型。

  6. 预测

    predictions = model.predict(input_seq)
    print(predictions)
    

    使用训练好的模型进行预测,并打印预测结果。

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

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

相关文章

【redis】redis概述

1、定义 Redis(Remote Dictionary Server),即远程字典服务,是一个开源的、内存中的数据结构存储系统。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)…

基于springboot实现旅游网站系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现旅游网站系统演示 摘要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱,出错率…

想远程控制手机,用哪个软件好?

很多人都想知道安卓系统或iOS系统要如何实现手机远程控制手机、电脑远程控制手机,分别需要用到什么软件,这篇文章一次说清楚。 注意,安卓系统需要是7.0及以上版本,iOS系统需要是11及以上版本。具体使用步骤请点击关注,…

windows安装Nacos并使用

Nacos(前身为阿里巴巴的Nacos Config和Nacos Discovery)是一个开源的动态服务发现、配置和服务管理平台,由阿里巴巴开发并维护。它提供了一种简单且易于使用的方式来管理微服务架构中的服务注册、发现和配置管理。 主要功能包括:…

基于React18+Appwrite实现类似Instagram的社交APP

源码地址:https://github.com/sikichan/Ins-social-media-app 请给我一个Star ⭐️ 谢谢!

报道 | 2024年7月-2024年9月国际运筹优化会议汇总

封面图来源: https://www.pexels.com/zh-cn/photo/1181406/ 2024年7月-2024年9月召开会议汇总: 2024 INFORMS Advances in Decision Analysis Conference (ADA) Location: Finland Important Dates: Conference: July 10-12, 2024 Details:https://w…

【云原生】Kubernetes网络知识

Kubernetes网络管理 文章目录 Kubernetes网络管理一、案例概述二、案例前置知识点2.1、Kubernetes网络模型2.2、Docker网络基础2.3、Kubernetes网络通信2.3.1、Pod内容器与内容之间的通信2.3.2、Pod与Pod之间的通信 2.4、Flannel网络插件2.5、Calico网络插件2.5.1、Calico网络模…

【吊打面试官系列-Mysql面试题】说说对 SQL 语句优化有哪些方法?

大家好,我是锋哥。今天分享关于 【说说对 SQL 语句优化有哪些方法?】面试题,希望对大家有帮助; 说说对 SQL 语句优化有哪些方法? 1、Where 子句中:where 表之间的连接必须写在其他 Where 条件之前&#xff…

智能工厂中滑环应用的集成式和分立式数据接口解决方案

第四次工业革命通过在生产过程中实现新场景来推动数字化制造向前发展。这些场景依赖于基本的设计原则,包括器件互联、信息透明、技术协助,以及分散决策。没有先进的无线通信技术,就无法在现代智能工厂中实现所有这些原则。它们支持在广泛的领…

Java露营基地预约小程序预约下单系统源码

轻松开启户外探险之旅 🌟 露营热潮来袭,你准备好了吗? 随着人们对户外生活的热爱日益增加,露营已成为许多人周末和假期的首选活动。但你是否曾因找不到合适的露营基地而烦恼?或是因为繁琐的预约流程而错失心仪的营地…

三大关键技术看RAG如何提升LLM的能力

大语言模型表现出色,但是在处理幻觉、使用过时的知识、进行不透明推理等方面存在挑战。检索增强生成(RAG)作为一个新兴的解决方案,通过整合外部知识库的数据,提高了模型在知识密集型任务中的准确性和可信度&#xff0c…

(9)农作物喷雾器

文章目录 前言 1 必要的硬件 2 启用喷雾器 3 配置水泵 4 参数说明 前言 Copter 包括对农作物喷雾器的支持。该功能允许自动驾驶仪连接到一个 PWM 操作的泵和(可选)旋转器,根据飞行器速度控制液体肥料的流动速度。 稍微过时的视频显示了…

高质量数据不够用,合成数据是打开 AGI 大门的金钥匙吗?

编者按: 人工智能技术的发展离不开高质量数据的支持。然而,现有可用的高质量数据资源已日渐接近枯竭边缘。如何解决训练数据短缺的问题,是当前人工智能领域亟待解决的一个较为棘手的问题。 本期文章探讨了一种经实践可行的解决方案 —— 合成…

如何从零开始搭建成功的谷歌外贸网站?

先选择一个适合外贸网站的建站平台,如WordPress或Shopify。这些平台提供丰富的主题和插件,可以帮助你快速搭建和定制网站。设计网站时,注重用户体验,确保导航清晰、页面加载快速、移动端友好。确保网站的SEO优化。从关键词研究开始…

python turtle 001画两只小狗

效果图: 代码: pythonturtle001画两只小狗资源-CSDN文库 # 作者V w1933423import turtle # 导入turtle模块def draw_dogs():turtle.setup(800, 800) # 设置画布大小为800x800p turtle.Pen() # 创建一个画笔对象p.pensize(14) # 设置画笔大小为14p.…

11.xss之href输出

11.xss之href输出 后台配置文件中的代码 xss之href输出绕过:javascript:alert(1111) 直接代入a标签herf里面一样可以绕过htmlspecialchars 输入攻击代码 javascript:alert(1111)点击蓝色字体直接会弹窗,如图所示:

手机pdf删除怎么办?只需要2招,就可以快速恢复耶

PDF文件,这个我们日常生活中的常客,越来越受到大家的喜爱。但是,有时候我们会因为一时的疏忽或者清理手机内存而不小心删掉了重要的PDF文件,这可真是让人头疼啊!那么,这些pdf删除后,有没有什么好…

汇凯金业:预测黄金现货涨跌趋势的关键方法

在金融市场中,黄金现货作为一种重要的避险资产,价格波动受到全球经济、货币政策、市场情绪等多重因素的影响。要有效预测黄金现货的涨跌趋势,不仅需深刻理解这些因素,还需掌握一系列的分析技巧。本文将详细介绍一些关键的分析方法…

Kafka入门-基础概念及参数

一、Kafka术语 Kafka属于分布式的消息引擎系统,它的主要功能是提供一套完备的消息发布与订阅解决方案。可以为每个业务、每个应用甚至是每类数据都创建专属的主题。 Kafka的服务器端由被称为Broker的服务进程构成,即一个Kafka集群由多个Broker组成&#…

Java银系统/超市收银系统/智慧新零售/ERP进销存管理/线上商城/h5/小程序

>>>系统简述: 神点收银系统支持B2B2C多商户模式,系统基于前后端分离的架构,后端采用Java SpringBoot Mysql Mybatis Plus,前端基于当前流行的Uniapp、Element UI,支持小程序、h5。架构包含:会员端…