NIPS 24 | PGN:RNN 的新继任者

PGN(Pointer-Generator Networks) 1典型的seq2seq 1.1存在的一些问题 从模型的路径上看,encoder到实际输出有一定距离,从此限制了反向传播。 OOV(Out-of-vocabulary未登录词 ):摘要总结的结果有的时候并不准确,比如摘要的结果可能输出德国队以2-1比分击败阿根廷,但是实际比分是2-0,出现这个的原因是out-of-vocabulary words(OOV)的出现 Word-repetition问题:摘要结果会出现repeat重复的信息,比如重复出现德国队击败阿根廷队 PGN(Pointer-Genera 阅读详情
AI摘要

本文提出并行门控网络(PGN)作为RNN继任者,又基于PGN设计时间并行门控网络(TPGN)用于长程时间序列预测。介绍了相关工作,阐述了PGN和TPGN的结构、原理及计算过程。实验表明,TPGN在多个数据集上取得先进性能,效率也令人满意。

本文提出了一种名为并行门控网络(Parallel Gated Network,PGN)的新型通用范式,作为循环神经网络(Recurrent Neural Network,RNN)的继任者,并基于PGN设计了一种新型时间建模框架——时间并行门控网络(Temporal Parallel Gated Network,TPGN),用于长程时间序列预测任务。

一、引言

长程时间序列预测在多个领域具有重要应用价值,例如能源、气候和交通等。与短程预测相比,长程预测能够提供更全面的信息,帮助个人和组织更准确地评估未来变化并做出明智决策。

近年来,基于深度学习的方法在时间序列预测领域取得了显著进展,主要分为以下四类范式:

  1. Transformer: 基于自注意力机制,能够捕捉长距离依赖关系,但存在计算复杂度高、难以捕捉语义信息等问题。

  2. 卷积神经网络(CNN): 具有高效的并行计算能力,但受限于感受野,难以有效捕捉长程依赖关系。

  3. 多层感知器(MLP): 结构简单,计算效率高,但在提取深层语义信息方面存在局限。

  4. RNN: 能够捕捉序列中的时间依赖关系,但存在以下主要问题:

  • 循环结构导致信息传播路径过长,难以有效捕捉长程依赖关系。

  • 存在梯度爆炸/消失问题,训练难度大。

  • 顺序计算方式导致计算效率低下,即使理论复杂度与序列长度L线性相关,但实际运行速度甚至可能比Transformer更慢。

针对RNN的局限性,本文提出了一种新的通用范式——PGN。

二、相关工作

2.1 时间维度建模

现有方法主要分为以下四类:

  1. RNN:
  • 传统RNN存在信息传播路径过长、难以捕捉长程依赖关系等问题。

  • DilatedRNN 通过引入多尺度扩张机制缩短信息传播路径,但路径长度仍与序列长度L线性相关。

  • SlicedRNN 通过将序列分割为多个切片进行并行计算提高效率,但信息传播路径长度不变。

  • WITRAN 将序列重塑为二维,同时在两个方向进行信息传播,将信息传播路径缩短到O(VL),但仍相对较长。

  1. CNN:
  • 具有高效的并行计算能力,但受限于感受野,需要堆叠多层模块才能捕捉全局信息,导致信息传播路径长度为O(G),G与序列长度L超线性相关。

  • TimesNet 通过二维建模方法将输入长度在两个方向上都设为O(VL),信息传播路径长度为O(VG)。

  • MICN 和 ModernTCN 通过扩大卷积核的感受野有效缩短信息传播路径,但由于采用一维建模方法,在捕捉周期性特征方面可能不如 TimesNet。

  1. MLP:
  • DLinear 和 NLinear 通过序列分解和重新归一化方法优化原始线性模型,实现基于历史输入的直接未来预测,但提取深层语义信息的能力有限。

  • TimeMixer 采用两个专用模块从多个尺度分析预测时间序列数据,能够有效捕捉周期性,但计算成本和训练难度较高。

  • FITS 将时间序列预测视为插值,将时间序列转换为频域进行处理,但可能忽略序列中存在的显式局部变化。

  1. Transformer:
  • 基于逐点注意力机制的方法,如 Vanilla-Transformer、Informer 和 FEDformer,信息传播路径长度为O(1),但难以捕捉时间步长的语义信息。

  • Autoformer 通过序列分解在一定程度上捕捉时间序列的周期性,但不如 TimesNet 直接,且复杂度仍然较高,为O(L log L)。

  • Pyraformer 通过金字塔结构的特殊设计有效捕捉序列的周期性,但受限于卷积核初始化金字塔结构节点,复杂度为O(L)。

  • PatchTST 通过补丁捕捉局部语义信息,将复杂度降低到O((L/S)2),但仍无法直接捕捉序列的周期性。

  • iTransformer 主要关注变量之间的关系,包括时间序列变量与外部时间特征之间的关系,在时间维度上采用直接基于补丁的方法,难以有效提取周期性模式和其他局部特征。

  • PDF 也将原始一维序列转换为二维表示进行建模,利用CNN处理短期信息,难以充分捕捉序列中存在的所有周期性特征。

2.2 变量维度建模

现有方法主要分为以下四类:

  1. 变量融合处理: 由于多变量的异质性,会引入过多噪声,导致性能不如变量独立处理。

  2. 变量独立处理: 无法捕捉变量之间的关系。

  3. 基于Transformer的建模: 例如 Crossformer 和 iTransformer,利用注意力机制和图神经网络(GNN)在变量维度上建模,成功捕捉变量之间的相关性和差异性。

  4. 基于GNN的建模: 例如 CrossGNN 和 FourierGNN。

三、方法

3.1 并行门控网络(PGN)

PGN旨在解决RNN信息传播路径过长的问题。

结构与原理:

  • 历史信息提取(HIE)层: 采用线性层并行聚合整个历史信息,每个时间步的计算独立于其他时间步,支持并行处理。

  • 门控机制: 继承RNN信息选择和融合的优势,使用单个门控同时控制序列中所有时间步的信息选择和融合,减少计算开销。

计算过程:

给定长度为L的输入信号 ,PGN的计算过程如下:

其中:

  • 将处理后的信号沿长度维度填充零向量。

  • 为线性层,聚合所有历史信息。

  • 和 为权重矩阵和偏置向量。

  • 和 为中间变量, 为元素积, 和 为激活函数。

  • 为PGN的输出。

优势:

  • 将信息传播路径缩短到O(1),更好地捕捉长程依赖关系。

  • 并行计算能力,显著提高实际运行速度。

3.2 时间并行门控网络(TPGN)

TPGN旨在解决PGN在时间序列预测任务中无法有效提取周期性语义信息的问题。

输入准备模块:

  • 将一维序列重塑为二维表示,其中行表示短期变化,列表示长期周期性模式。

  • 引入归一化层,减少数据波动对模型训练的影响。

TPGN:

  • 长期信息提取分支:

  • 利用PGN沿着R维度进行建模,保留每个时间步的长期重复历史信息。

  • 通过线性层聚合所有行的信息,得到输出 。

  • 短期信息提取分支:

  • 利用线性层将短期信息聚合到补丁中。

  • 再利用另一个线性层将补丁融合为序列的全局信息 。

  • 将 重复P次,得到与长期信息提取分支输出维度相同的表示 。

预测模块:

  • 将两个分支的输出连接起来,包含局部长期周期性特征和全局短期信息。

  • 通过线性层预测未来不同位置的值。

复杂度分析:

  • PGN: 复杂度为O(L),与RNN相同,但实际效率更高。

  • TPGN: 复杂度为O(VL),其中V表示变量数量。

四、实验

4.1 实验结果

数据集: ECL、Traffic、ETTh1、ETTh2 和 Weather。

基线方法: WITRAN、ModernTCN、TimesNet、MICN、FITS、TimeMixer、DLinear、iTransformer、PDF、Basisformer、PatchTST 和 FiLM。

实验结果:

  • TPGN在所有任务中均取得了最先进的性能,平均MSE提高了12.35%,MAE提高了7.25%。

  • TPGN在 ECL 数据集上的MSE平均降低了17.31%,Traffic 数据集降低了9.38%,ETTh1 数据集降低了3.79%,ETTh2 数据集降低了12.26%,Weather 数据集降低了19.09%。

  • TPGN在预测不同长度的任务时,性能下降趋势较慢,表现出更强的长程预测能力。

4.2 消融研究
  • TPGN的两个分支分别捕捉长期和短期信息,并保留各自的特征。

  • 长期信息提取分支对模型性能的影响更大,尤其是在周期性较强的数据上。

  • 与具有多个门控的 GRU 和 LSTM 相比,PGN 仅使用一个门控,但性能更优,证明了 PGN 作为 RNN 继任者的能力。

  • TPGN框架具有很强的通用性和性能,即使将 PGN 替换为 GRU、LSTM 或 MLP,在某些任务中也能超过之前的 SOTA 方法。

4.3 执行效率

为了全面评估所提出方法的效率,本文进行了两组比较实验:

第一组实验: 固定输入长度为168,输出长度分别为168/336/720/1440,研究预测长度对模型实际运行效率的影响。

第二组实验: 固定输出长度为1440,输入长度分别为168/336/720/1440,研究历史输入序列长度对模型实际运行时间的影响。

效率分析考虑了时间和内存两个方面。实验选择了每种范式中具有代表性的方法作为比较方法,固定批量大小为32,模型维度大小为128,并使用单层模型进行测试。

实验结果表明:

  • 虽然 TPGN 的时间和内存开销不是最低的,但在时间和空间效率方面均表现出较高的效率。

  • 需要注意的是,TPGN 是一个单层模型,而其他大多数模型需要引入更深层,这不可避免地会导致更高的开销。

  • 这进一步证明了本文方法不仅取得了最先进的性能,而且在效率方面也令人满意。

五、结论

本文提出了一种新的通用范式——并行门控网络(PGN)。PGN 具有 O(1) 信息传播路径和并行计算能力,在保持与 RNN 相同的理论复杂度 (O(L)) 的同时,实现了更快的运行速度。

为了增强 PGN 在长程时间序列预测任务中的应用,本文引入了一种新的时间建模框架——时间并行门控网络(TPGN),其复杂度为 O(VL)。TPGN 通过两个分支分别建模长期和短期信息,有效地捕捉周期性信息和局部-全局语义信息,同时保留各自的特征。

在五个基准数据集上的实验结果表明,基于 PGN 的框架 TPGN 取得了最先进的性能和高效率。这些发现进一步证实了 PGN 作为 RNN 在长程时间序列预测任务中的继任者的有效性。

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓

优快云粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传优快云,朋友们如果需要可以扫描下方二维码&点击下方优快云官方认证链接免费领取 【保证100%免费】

读者福利: 👉👉优快云大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
在这里插入图片描述

👉2.AGI大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

在这里插入图片描述
在这里插入图片描述

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

在这里插入图片描述

👉4.大模型落地应用案例PPT👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)

在这里插入图片描述

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
img

在这里插入图片描述

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)

在这里插入图片描述
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习

优快云粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传优快云,朋友们如果需要可以扫描下方二维码&点击下方优快云官方认证链接免费领取 【保证100%免费】

读者福利: 👉👉优快云大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)
工业通信原理——CAN通信问题汇总(一) CAN通信问题汇总(一) 阅读详情

相关推荐

Pointer-Generator networks(PGN)模型: 生成式语言模型,通过指针网络实现了序列到序列的转换,并结合了语言模型和生成器网络的优点,提升了生成质量

本文将介绍Pointer-Generator networks(PGN)模型,这是一种生成式语言模型,通过指针网络实现了序列到序列的转换,并结合了语言模型和生成器网络的优点,提升了生成质量。本文基于论文进行详细阐述,对其中的一些机制进行了重新解释和说明,方便读者理解PGN模型。PGN模型是一种新的模型,它同时利用了传统的机器翻译任务中的强大的语言建模能力和RNN结构中的长时记忆特性。相比于传统的seq2seq模型,PGN模型增加了一个指针网络,用来帮助生成模型选择输出语句的上下文。

AI天才研究院 1652

PGN详解

qq_41979960的博客 6319

国际象棋读谱程序——PGN管理与分析

本文还有配套的精品资源,点击获取 简介:PGN是国际象棋对局记录的标准化文本格式,广泛用于存储和交换棋谱数据。它包含游戏信息、棋谱记录、结果和注释等核心内容。国际象棋读谱程序(如ChessViewer)提供读取、显示、搜索、注释编辑、开局库支持、导出打印和游戏分析等实用功能。此外,程序还能合并多个PGN文件,方便用户管理和学习棋谱。 ![国际象棋读谱程序 (PGN) 中的专...

weixin_34520664的博客 3032

NeurIPS 2024 | 时间序列(Time Series)论文总结

链接作者关键词:分类,可解释性,泛化性AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

star_nwe的博客 2867

Gem5模拟器,详解官网教程Event-driven programming(五)

Gem5模拟器,详解官网教程Event-driven programming、时间调度、如何自定义SimObject

qq_46675545的博客 2040

c++实现异步线程池并详细分析线程池析构流程

多线程编程是提高程序性能和响应能力的关键技术之一,异步线程池作为多线程编程的一种有效实现方式,能够管理和复用线程资源,避免频繁创建和销毁线程带来的开销。在本文中,我们将深入探讨如何实现一个异步线程池。

2301_76564925的博客 1599

J1939中的PGN和SPN

PDU由数据帧中的ID和数据场组成,数据帧和PDU的对应关系如下图所示。**PS(PDU Specific),特定协议数据单元字段,**当PF的值为0-239时PS表示目标地址(PDU1格式),当PF的值为240-255时PS字段表示组扩展(PDU2格式),且报文只能广播。第一个字节是18,转为二进制是 0001 1000,可以看到优先级是110(对应十进制的6),EDP=0,DP=0。第一个字节是0c,转为二进制是 0000 1100,可以看到优先级是011(对应十进制的3),EDP=0,DP=0。

liuyuedechuchu的博客 9833

INS/伪距组合导航(2)

伪距惯导组合导航

u014430081的博客 828

CAN协议中的PGN

PGN是参数组编号,对于制定CAN协议来说十分重要,很多ECU在接受报文时识别的就是PGN而不是报文的ID, 报文ID作为报文的名字,是没一条报文专有的名字,而一个PGN不仅仅对应一条报文。CAN的扩展帧使用29位标识符,报文ID共有四个字节32位,PGN共有3个字节24位,两者有重合但是PGN并不是ID的一部分。 PGN的24位分别是:6个bits的0,一个扩展数据页(EDP)、数据页(DP

meteorite91的专栏 3万+

ABAP调用启信宝API

方法参数定义如下 源代码如下 method qxb_http_get. data:lv_url type string. "===============初始化=============================================== "获取http实例 cl_http_client=>create_by_destination( exporting destination = space importing

u012232542的博客 1311

动态数据脱敏技术分析

在当前国内信息安全热潮中,数据脱敏作为数据安全的重要一环得到了业界的认可与重视。早在2012年,数据脱敏首次作为一个单独的魔力象限由Gartner发布,Gartner在2014年又提出了:按照数据使用场景,将数据脱敏分为静态数据脱敏(Static data masking-SDM )与动态数据脱敏(Dynamic data masking-DDM )。 可能有人望文生义,认为动态数据脱敏一定比静态数据脱敏高级。非也非也,静态or动态,取决于脱敏的使用场景,主要是以使用场景为由来选择合适的数据脱敏的模式。 本

美创科技的博客 4673

Can Id 中的J1939-PGN相关

Can Id ---- PGN

sky_share的博客 2386

KoboldCpp vs Ollama vs llama.cpp 全面对比(2026工程视角)

本文对比分析了KoboldCpp、Ollama和llama.cpp三大本地AI推理工具的核心差异。llama.cpp作为基础引擎性能最强但上手困难;KoboldCpp在其基础上增加了UI界面,适合娱乐创作;Ollama则提供最简化的模型管理和API服务。性能实测显示:llama.cpp>KoboldCpp>Ollama。选型建议:新手用Ollama快速入门,玩家选KoboldCpp获得交互体验,工程师用llama.cpp追求极致性能。三者定位清晰:性能极限、使用体验和开发效率各有所长。

刘一说的IT专栏 907

PGN与SPN的区别

PGN是一组24位的数,它的位3-8默认是0,字节1的位2与位1对应扩展帧的R、DP,字节2和字节3对应扩展帧的PF、DA/GE其中PF是PDU格式,DA是目标地址GE是群扩展。 对于ID:0x18FD16F0,它的PGN为00FD16,0X18=0001 1000,其中110=6为优先级,由此可以看出优先级+PGN字节1的位2与位1(对应扩展帧的R、DP)+源地址=1 1000+1111 11...

qq_42275888的博客 2万+

Xilinx FPGA平台GTX简易使用教程(五)GTX收发测试及示例工程介绍

GTX IP配置完了,你不得搞个回环测试一番?

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

Unity 热更新技术 | (二) AssetBundle - 完整系列教程学习

开始学习热更新方面系列知识,就从这一篇开始吧! 本系列教程 会从热更新基本概念出发,详细介绍热更新相关的全套知识点。 如热更新技术基本原理、热更新主流方案、AssetBundle系列教程、Lua语言编程、Lua与Unity交互教程、Xlua框架使用、热更新实战教程等方面。 热更新作为一个开发者必备技能,如果想学习的话,可以从现在开始了哦~ 接下来从 AssetBundle - 完整系列教程学习 开始学习吧!

努力前行,总会成为自己心中的那道光 1万+

SAE-J1939中的PGN MSB和SPN,以及多包传输

数据的分辨率和范围,以及定标,都有标准规定在文档中,选择适合你的应用,如下表对数据的范围,偏移,长度,缩放等都有规定,可以参阅SAE发布的标准。PGN即Parameter Group Number是J1939协议中用来标识参数集所定义的,共有24位,占三个字节,是CAN 29位标识符的一部分,其实SAE J1939这种高层协议都是充分利用了CAN的29位标识符,因为对CAN的29位标识符在CAN 2.0中并没有做具体规定,所以这就给高层协议的制定留下了很大的空间,通过一张表就可以清楚的知道。

qq_25284701的博客 5609

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

文本生成中的PGN网络

encoder通过self-attention机制计算出各输入向量的隐表示来作为K,V,decoder中每个时间步的输入隐状态作为Q,然后Q和K做点乘经softmax操作得到各输入向量的权重,然后再和V做点乘得到上下文表示,将上下文表示和该时间步的输出隐表示拼接后作为该时间步的解码输出。

weixin_42887772的博客 586

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

can协议之PGN

PGN是参数组编号,对于制定CAN协议来说十分重要,很多ECU在接受报文时识别的就是PGN而不是报文的ID, 报文ID作为报文的名字,是没一条报文专有的名字,而一个PGN不仅仅对应一条报文。CAN的扩展帧使用29位标识符,报文ID共有四个字节32位,PGN共有3个字节24位,两者有重合但是PGN并不是ID的一部分。 PGN的24位分别是:6个bits的0,一个扩展数据页(EDP)、数据页(DP)、...

qq_42215863的博客 4746

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

PGN: 指针生成网络

本文的混合指针生成模型通过指针从原文中复制单词,文本生成准确性提高,并解决了OOV问题,同时保留生成原文中未出现的新单词的能力,该网络可视为摘要方法和抽取方法之间的平衡,类似于应用于短文本摘要的 CopyNet 和 Forced-Attention Sentence Compression 模型。我们提出一种新型的覆盖向量(源于NMT,可用于跟踪和控制原文的覆盖率),结果表明,覆盖机制对于消除重复性非常有效。本文提出一种网络结构,在多句上下文总结中解决以上三个问题。指针生成网路文章连接。

DongxueB的博客 643

J1939协议中CAN ID 与PGN互换--遇到了广播报文

Ref:https://www.csselectronics.com/screen/page/simple-intro-j1939-explained 根据其转换,利用J1939协议来解析。 Parameter Group Number (PGN) TheJ1939 PGNcomprises an 18-bit subset of the 29-bit extended CAN ID. In simple terms, the PGN serves as a unique frame identi..

jaz的专栏 1万+

CAN缩写

PG, Parameter Group 参数组 PGN, Parameter Group Number 参数组编号 PDU, Protocol Data Unit 协议数据单元 PF, Protocol Data Unit Format 协议数据单元格式 PS, PDU Specific 特定协议数据单元 DF, Data File 数据域 DP, Data Page 数据页 DA, Destination Address 目标地址 DLC, 数据长度码 ...

东川 2455

指针生成网络(PGN)详细指南(引入)

在每个时间步,解码器首先将上一步的输出通过一个嵌入层和dropout层,然后用注意力层计算当前隐藏状态对编码器输出的注意力权重。在实现上,注意力机制会为编码器的每个时间步的输出分配一个权重,然后基于这些权重计算一个上下文向量(Context Vector),作为解码器的附加输入。权重的计算通常基于解码器当前的隐藏状态和编码器各时间步的输出。在每个时间步,解码器根据上一步的输出、当前的隐藏状态和编码器的输出计算注意力权重,然后将注意力权重与编码器输出加权求和,得到一个上下文向量。

小森的博客 1403

指针生成网络(PGN)的简单总结

基于RNN的seq2seq: 好处: 用于文本生成,可以用于抽象总结。 坏处: 不准确的复制事实细节;无法处理OOV;生成文本有重复倾向;长文本下效果效果倾向于language model PGN分析: 通过指针从原文复制单词,有效处理OOV,保留产生新词的能力。通过COVERAGE机制对重复单词给予惩罚。 1. seq2seq with attention 过程 input x=(x1,x2,...,xTx)input \ x = (x_1,x_2,...,x_{T_x})input 

weixin_42267196的博客 2567
上一篇: 清华&面壁开源新一代主动Agent交互范式!让AI从被命令到主动帮助
下一篇: 从单体大模型到多智能体:构建下一代AI系统
大模型产品经理
博客等级 码龄3年 1万+粉丝 1120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值