科普文章|波卡上令人翘首以盼的XCM究竟是什么?

Polkadot|茶溪岸啤(XCMP),干杯! 概述 Polkadot XCMP(Cross-chain Message Passing)是Polkadot上的链间消息传输协议,主要用于平行链间传递消息。XCMP目前处于开发中,有些内容可能会发生变动,不过其架构已经差不多成型。 根据Polkadot自己的说法,XCMP利用基于Merkle树的简单队列机制确保跨链交易的保真度(fidelity)。中继链上的验证人负责把平行链出口队列中的交易转移到目标链的入口队列中,但是中继链并不会存这个跨链交易(或者说跨链消息)的原文,而只会存一些少量的消息元数据。 XC 阅读详情

“未来将是多链的......”,这句老生常谈的话近期被以太坊的创始人V神再次强调。加快资产在不同链间流动性的同时,又能保障资产安全和互操作性能,已经成为业内技术升级的共识方向。

波卡是少有的异构多链结构,其中的技术优势之一是为接入的平行链提供共享安全性以及跨链交互功能。

1 什么是共享安全性

共享安全性由中继链上的验证人(Validator)提供,让所有接入波卡的平行链可以享受同等的安全性,从而实现平行链直接的相互通信与信任。

2 XCM支持共享安全与跨链通信

Cross-Consensus Message(XCM)——跨共识信息格式允许平行链从原生的状态,赋予平行链与其他平行链和中继链交互的能力,并允许任何资产在链上传递。

每条链都有自己的“方言”,而XCM就像是不同链之间的通用“语言”,帮助处于不同链上信息的接收和传送者保持信息同步,知道自己在收到信息后应该有什么反应。

目前跨共识信息格式(XCM)由两种跨共识协议组成,分别为垂直信息传递(VMP)和跨链信息传递(XCMP)。

跨链信息传递(XCMP)仍在开发当中,暂替方案是横向中继路由信息传递(HRMP - Horizontal Relay-routed Message Passing),HRMP将会在XCMP部署后弃用。

垂直信息传递(VMP - Vertical Message Passing)

  • 向上信息传递(UMP - Upward Message Passing):允许平行链传递信息至中继链,举例而言,可以自Moonbeam传递信息至波卡中继链。

  • 向下信息传递(DMP - Downward Message Passing):当平行链接入中继链(如Moonriver接入了Kusama),则允许中继链向平行链传递信息。而跨链的交易则使用基于Merkle Tree的基础排队机制以确保交易的真确度。收集人将会在平行链之间进行信息交换,而中继链上的验证人将会对这些信息进行验证。

跨链信息传递(XCMP - Cross-Chain Message Passing)

在不同的平行链连接至同个中继链的情况下(如Moonriver连接至Kusama),允许两个平行链之间相互交换信息。而跨链的交易则使用基于Merkle Tree的基础排队机制以确保交易的真确度。收集人将会在平行链之间进行信息交换,而中继链上的验证人将会对这些信息进行验证。

图片

3 XCM具体如何运作

在平行链之间运行XCM之前,两条平行链都需要进行一定的准备工作,方能进行跨链的信息传递。首先,A链必须与B链之间建立频道,用于传输信息。

注意,链之间的频道并不是双向信息传递频道,如果A链和B链希望能够进行双向的信息传递,需要建立两个频道方能进行。频道建立成功后,A链和B链将会分别需要注册资产,成功注册资产后才能进行跨链资产转移。跨链资产转移将会需要收取一定的手续费,将会直接从转移资产中扣除。

4 XCM的应用案例

XCM的意义在于令波卡生态系的平行链和中继链之间能够自由的进行信息传递,而信息传递则包含资产转移、协议互部署等等的应用场景。目前最先被广泛应用之一是传送资产,而Moonbeam上的跨链资产将会以xc+Token名称的形式表现,如KSM将会在Moonriver上以xcKSM的形式呈现。

资产传送(Asset Teleporting)——类似于销毁铸造的桥接机制,通过销毁在初始区块链的资产并在目标链上创建相应数量的资产以将资产从一个区块链转移到另外一个区块链,从而保证链上资产的原生性。

远程转移(Remote Transfers)——此机制类似于锁仓铸造或是销毁解锁的桥接机制。通过在初始区块链上由目标区块链所拥有的中间账户将资产转移至目标区块链。此中间账户称为“主权账户”(Sovereign Account)。在此情况下,原本链上的资产将不会被销毁(Burn),而是由主权账户持有。而XCM将会在目标链上“铸造”(也可以说“包装”)相应资产至目标地址。此“铸造”的资产将始终以1:1的比例与原生资产兑换。

图片

跨共识信息格式(XCM)正式运行后将会为波卡生态系带来颠覆性的转变。

XCM将能够让每条链上的资产自由转移,而链与链之间的互通有无也将让波卡生态系成为一个具有多种不同功能以及应用的生态系,进而让用户能够体验不同的项目的同时也能够享受波卡带来的便捷性。


关于Moonbeam
Moonbeam是波卡(Polkadot)网络中与以太坊兼容的智能合约平台,可实现轻松构建原生的互操作性去中心化应用。以太坊兼容特性允许开发者以最少的更改将现有的Solidity智能合约和DApp前端部署到Moonbeam。Moonriver作为Kusama上最活跃的平行链,已有80多个DApp完成在Moonriver的集成。Moonbeam将受益于Polkadot中继链的共享安全性和链接波卡其他链的互操作优势。 

如需了解更多信息,请访问:Moonbeam | Polkadot Smart Contract Platform

更多 Moonbeam 信息 
官网: Moonbeam | Polkadot Smart Contract Platform
微博:Sina Visitor System
twitter: https://twitter.com/MoonbeamNetwork
Telegram: https://t.me/moonbeam_CN
Discord: https://discord.gg/skPfXvJWG7
中文电报群助手:@MoonbeamSister

AM263P ePWM高级功能解析:XCMP复杂波形与HRPWM高精度控制 在数字电源和电机驱动等实时控制系统中,脉宽调制(PWM)技术是核心的执行手段,其精度和灵活性直接决定了系统的性能上限。传统PWM基于固定频率的计数器与比较器,通过调节占空比来控制功率开关的通断,原理简单但分辨率受限于系统时钟。为了突破这一瓶颈,高分辨率PWM(HRPWM)技术应运而生,它通过微边沿定位器(MEP)将时间控制精度从纳秒级提升至皮秒级,极大地提升了控制精度和动态响应能力。这项技术的核心价值在于,它允许工程师在更高的开关频率下(如MHz级别)依然保持精细的占空比调节,这对于提升功率密度和效率至关重 阅读详情

相关推荐

深入解析TI C2000 ePWM的XCMP与HRPWM技术:实现高精度复杂波形控制

脉宽调制(PWM)是数字电源、电机驱动等电力电子系统的核心控制技术,其精度直接影响系统效率与性能。传统PWM受限于系统时钟周期,分辨率有限。高分辨率PWM(HRPWM)通过微边沿定位器(MEP)技术,在一个时钟周期内进行数百次细分,将边沿定位精度提升至皮秒级,突破了数字时钟的限制。结合扩展比较器(XCMP)模式,可在单个PWM周期内生成多达8个精确时序的脉冲边沿,并通过三级影子缓冲实现波形参数的无缝预加载与切换。这两项技术协同工作,为需要极高精度和复杂多脉冲序列的应用(如多相交错数字电源、伺服电机控制)提供

congsikuai0611的博客 505

波卡区块链

验证完平行链区块,验证人还要验证中继链区块,这涉及更新事物队列的状态(本质是将数据从平行链的输出队列移动到另一个平行链的输入队列)、处理已验证的中继链的交易集合、验证最终块(包括最后一次更新平行链)。在原有的区块链设施(比如属于Proof-of-work的比特币和以太坊,以及属于Proof-of-Stake的NXT和BitShares中,由于状态转移机制(执行交易)和共识规范化机制(就交易达成共识)挂钩,大大限制了交易速度(从3000次/秒到30次/秒)。这是因为每个平行链需要的验证人数量是固定的。

StickyFingersPC的博客 850

TI AM261x ePWM高级功能:XCMP复杂波形与HRPWM高精度调制详解

在电机驱动和数字电源等嵌入式控制系统中,脉宽调制(PWM)是实现精准功率控制的核心技术。其基本原理是通过调节开关信号的占空比来控制平均电压或电流。随着应用对性能要求的不断提升,传统PWM在波形复杂度和时序精度上逐渐面临瓶颈。为此,德州仪器(TI)在其新一代处理器(如AM261x)的增强型PWM(ePWM)模块中,集成了XCMP(复杂比较)和HRPWM(高分辨率PWM)两项关键技术。XCMP模式通过支持单周期内多达8个可编程比较点,实现了多脉冲、非对称等复杂波形的硬件生成,极大减轻了CPU负担并保证了时序确定

weixin_27017211的博客 313

polkadot介绍

文章目录简介共识角色验证者(validator)提名人(Nominator)校对员(collactor)fockless升级Rococo网络Kusama网络Parachain与Parathread插槽拍卖插槽为什么要拍卖插槽分配情况蜡烛拍卖Crowdloan 机制 简介 Polkadot(中文名也叫波卡)是Web3基金会的主要项目之一,是一条异构的多链系统,旨在重塑区块链网络结构,Polkadot主要解决三大问题:1. 跨链互通——不同区块链之间相互通信;2. 可扩展性——通过平行链自由扩展;3. 共享

KK下山去买菜 1万+

深入解析AM263x ePWM Type 5:XCMP复杂波形与HRPWM高精度控制

脉宽调制(PWM)是电机驱动和数字电源等电力电子系统的核心技术,其核心原理是通过调节脉冲宽度来控制平均电压或电流。传统PWM在应对高动态响应与高效率需求时,常面临分辨率与灵活性的瓶颈。为解决此问题,高分辨率PWM(HRPWM)和复杂波形生成技术应运而生,它们通过微边沿定位和多重比较寄存器,实现了纳秒级精度与多脉冲序列的硬件合成,极大提升了系统的控制性能与效率。这些技术尤其适用于磁场定向控制(FOC)、移相全桥等高级拓扑,是实现高性能伺服驱动和高效开关电源的关键。本文聚焦于德州仪器AM263x微控制器中的增强

weixin_34026276的博客 426

AM263P ePWM XCMP与HRPWM:实现高精度复杂PWM波形生成

在电机驱动和数字电源等实时控制系统中,PWM(脉宽调制)技术是核心的执行手段,其精度和灵活性直接决定了系统的动态响应与稳态性能。传统PWM模块通常受限于单周期内有限的边沿事件,难以满足多电平逆变、特定谐波消除等复杂调制策略的需求。其原理是通过时间基准计数器与比较寄存器的匹配来触发边沿动作。为了突破这一限制,现代高性能控制器引入了扩展比较(XCMP)模式与高分辨率PWM(HRPWM)技术。XCMP模式通过一组可独立配置的寄存器,允许在一个PWM周期内预设多达八个比较点,并结合多级影子缓冲区实现波形的无抖动预加

weixin_29195615的博客 272

波卡近期活动一览| Polkadot Decoded 2024 重磅来袭,300 万 DOT 将用于 DeFi 增长

Polkadot 生态近期活动精彩纷呈,线上线下火热进行中!此外,Polkadot 2.0 的关键升级即将到来,Gavin Wood 博士也将在最新访谈节目中分享更多关于波卡的未来发展蓝图。波卡 DAO 通过提案,分配 300 万 DOT 支持 DeFi 生态发展。OneBlock+ 为你整理了近期波卡生态官方组织的值得参与和回顾的线上下活动及热点动态,赶快来参与并深入了解社区的最新动态吧!

CryptoBuffett的博客 1408

AM263P ePWM高级功能解析:XCMP复杂波形生成与HRPWM高精度控制

在电机驱动和数字电源等嵌入式控制系统中,脉宽调制(PWM)技术是实现精确功率控制的核心。其基本原理是通过调节开关信号的占空比或相位来控制电压或电流的平均值。随着系统对效率和动态响应要求的提升,传统的PWM技术在处理复杂多脉冲序列或追求亚纳秒级时序精度时面临挑战。为此,现代微控制器引入了高级PWM外设,通过硬件增强实现了复杂波形生成和超高分辨率控制,显著提升了系统的性能与可靠性。这些技术对于实现空间矢量脉宽调制(SVPWM)、优化开关损耗以及构建高性能伺服驱动和LLC谐振变换器等应用场景具有关键价值。本文聚焦

weixin_33314040的博客 330

区块链研究实验室| Polkadot波卡链:Minting, Bonding, Staking, Slashing

本周的文章是关于“minting”、“bonding”、“staking”和“slashing”,这是一个PoS区块链共识引擎的核心功能。 这是“区块链研究实验室| Polkadot波卡链:准备被提名为正式polkadot验证节点”的后续文章.这是对本主题的介绍并解释了拜占庭容错(bft)及其与POS的关系,因此您也可以查看这篇文章。 不仅是Polkadot,而且许多其他区块链网络...

willam1的专栏 554

xcm-format:Polkadot跨共识系统消息格式

Polkadot跨共识消息(XCM)格式 版本0,草稿 该页面详细介绍了链之间基于Polkadot的消息传递的消息格式。 它描述了形式数据格式,可能需要的其他环境数据以及数据报的相应含义。 背景 有几种共识系统,对于它们有利于进行通信。 这包括智能合约及其环境之间的消息,桥接器上的主权区块链之间的消息以及受相同共识控制的碎片之间的消息。 不幸的是,每个人都有自己的消息传递手段和标准,或者根本没有标准。 XCM旨在抽象出这些系统中典型的消息意图,并为前向兼容,可扩展和实用的通信数据报提供一个基本框架,以促进全球共识世界中不同数据系统之间的典型交互。 IPFS项目中的概念,特别是自描述格式的思想,始终被使用,并且引入了两种新的自描述格式来指定资产( MultiAsset )和共识系统位置( MultiLocation )。 Polkadot具有三个主要的消息传递系统,所有这些系统都将使用

智能车竞赛卡丁快跑组:自动驾驶与人车交互技术实战解析

本文深入解析了智能车竞赛卡丁快跑组的技术核心,重点探讨了自动驾驶与人车交互两大模块的实战方案。文章详细拆解了从环境感知、路径规划到语音识别、命令执行的完整流程,并分享了基于单片机平台的调试心法与赛场经验,为参赛者提供了一套从零开始、分步攻坚的系统性备赛指南。

f0g1h2的博客 1177

探析 2024 波卡平行链六大主要发展,共迎生态新升级!

来源:https://medium.com/@Zeeve/exploring-top-06-parachain-developments-of-2024-3d9f246faf3f编译:OneBlock+平行链是 Polkadot 生态的开拓性创新,有助于开发适应各种特定应用需求的先进 Layer1 区块链。回首 2023 年的发展历程,这是对于平行链来说重要的一年:每月活跃地址从 104,000 个激增至 200,000 个,其中头部平行链增长态势尤为明显。

CryptoBuffett的博客 1033

Cadence元件库介绍

Cadence安装完之后,在安装目录下,会有默认自带的一些常用元件库。例如,我的Candece安装目录为: D:\Cadence\Cadence_SPB_17.2-2016 元件库所在目录为: D:\Cadence\Cadence_SPB_17.2-2016\tools\capture\library 各个元件库对应的内容如下: AMPLIFIER.OLB 共 182 个零件,存放模拟放大器 IC,如 CA3280,TL027C,EL4093 等。 ARITHMETIC.OLB 共 182 个零件,存放

年少时的棉花糖 1万+

Polkadot的跨链消息传递方案(XCMP)

Polkadot的跨链消息传递方案(XCMP) 跨链消息传递(XCMP)是Web3基金会项目Polkadot的关键组件,跨链消息传递(XCMP)方案是Polkadot协议的一个子集。它定义了在除了共享中继链的安全之外没有其他的信任假设的情况下,消息如何得以在平行链之间传递。 介绍 Polkadot“1.0版”的一个关键性,是让原本隔离的平行链以安全和去信任的方式在彼此之间发送消息。出于此目的,我们...

qq_45784859的博客 1522

【GAMES101】现代计算机图形学入门 资料整理

课程网址 课程主页 包括ppt 课程PPT和视频 一篇搞定!GAMES101现代计算机图形学入门(全) 作业链接地址 作业论坛 GAMES101课程环境搭建(Win10+VSCode) 计算机图形学笔记 虎书pdf 提取:n2rx 【必须】:高等数学(微积分、线性代数)、算法、数据结构 【非必须】:信号处理、数值分析、大学物理(光学) 在线公式编辑器 一定要做作业,如果个人要配置环境的话应该是配置opencv,eigen这两个核心库就行了,目前觉得最核心的一个作业是作业3,实现着色器和渲染管线,做完一遍

ysh的博客 2684

01-SA8155 QNX 虚拟机Hypervisor

Hypervisor运行在Host OS操作系统上,其他操作系统均在Hypervisor上运行。:Hypervisor直接运行在硬件上,操作系统在Hypervisor之上运行。终止(关闭):echo control 0 dev/vmm。路径:qnx_ap/AMSS/platform/vm/resources/关闭/终止 qvm(GVM):slay -s SIGQUIT qvm。", //host PVM --- 主机。不直接操作/dev/vmm 实现关闭,启动vm。

静虚待令,有物混成 1万+

Polkadot|茶溪岸啤(XCMP),再来一杯!

导读:上一篇文章Polkadot 茶溪岸啤(XCMP),干杯!主要介绍了XCMP一些基本内容,还有XCMP消息路由方式。 「总体而言,XCMP主要分为2部分:XCMP消息的分发、XCMP消息的存取」,本文主要就是介绍XCMP消息的存取。 文末答题有惊喜:剩下3道题目准备好接招了吗? 如果上篇文章的内容你大致都能看懂,恭喜你,已经很厉害了!! 但是,请做好心理准备,因为接下去的内容将更加复杂,我们将用尽可能清晰的方式来解释。 XCMP消息的存取 当接收链接收到消息后,接下去要进行的流程是:处理消息,然后将消息

Hyperchain的博客 676

Simulink仿真入门到精通(三) Simulink信号

本系列教程是根据孙忠潇编著的<<Simulink仿真及代码生成技术入门到精通>>学习笔记。 目录 Simulink仿真入门到精通(一) Simulink界面介绍 Simulink仿真入门到精通(二) Simulink模块 Simulink仿真入门到精通(三) Simulink信号 Simulink仿真入门到精通(四) Simulink子系统 Simulink仿真入门到精通(五) Simulink模型的仿真 Simulink仿真入门到精通(六) Simulink模型保存为图片 Sim

king110108的专栏 5396

虚拟币用到的非常哇塞的技术(跨域消息传递XCMP)解读

跨链消息传递(XCMP)是区块链互操作性的核心技术,通过允许不同区块链网络之间安全、可靠地传递消息和价值,解决了区块链孤岛问题。它的工作原理基于消息队列和验证机制,通过中继链的协调实现安全传输。XCMP技术的实现涉及复杂的协议设计和密码学保障,需要考虑消息格式、路由、验证、安全性等多方面因素。在Polkadot等生态系统中,XCMP已经成为实现跨链互操作性的关键基础设施。随着区块链技术的发展,XCMP及类似技术将进一步促进区块链网络间的互联互通,推动更丰富的跨链应用场景,最终实现真正的"区块链互联网"

zhangzhechun_03的博客 994

视图库对接系列(GA-T 1400)四、视图库对接系列(本级)注册

在之前的步骤中,我们已经把项目大体的架构已经写出来了。那我们就来实现注册接口。GA-T 1400中的步骤如下:这里的话,我们实现的简单点, 我们不进去鉴权,也就是设备或平台找我们注册的话,我们直接返回成功,不进行验证。如果需要鉴权的话可看我的另外一篇文档。

qq_37716298的博客 1044

PCIe 全解析笔记:从协议本质到工程实现

学习 PCIe,最容易陷入的误区是直接跳进协议手册(Base Spec 1300 多页),然后在 TLP 字段、LTSSM 状态、Ordering Rules 中迷失方向。正确的思维路径历史维度:从 PCI 到 PCIe,解决了什么核心矛盾?抽象维度:协议栈分层的真正意图是什么?工程维度:高速串行链路面临哪些物理挑战?协议如何应对?系统维度:作为 CPU 与外设的"动脉",PCIe 如何融入整个计算机体系?带着这四个视角去看每一个细节,知识才能内化为认知。

m0_46644103的博客 261

Cumulus XCM消息通道详解:DMP、XCMP、HRMP三大消息机制完整指南

Cumulus 是面向 Polkadot / Kusama 生态的 Parachain 构建框架,而 XCM 消息通道正是平行链与外部世界通信的核心。本文带你完整搞懂 DMP、XCMP、HRMP 三大消息机制的工作原理、核心 Pallet 配置与新手常见问题,帮助你在 Cumulus 中快速搭建跨链通信能力。 ## 🧭 为什么 Parachain 离不开 XCM 消息通道? 平行链(Para

gitblog_00052的博客 432

飞牛NAS打造成童年经典游戏机

这篇文章介绍如何使用飞牛NAS搭建经典游戏模拟器。首先需开启Docker并下载RetroArch-web镜像,随后创建容器并设置端口映射。启动后上传游戏ROM文件(如NES格式),在模拟器中加载即可游玩。文章以修改版坦克大战为例,详细说明按键配置方法。同时还提到公网访问需配置DDNS或使用ZeroTier内网穿透。通过这套方案,用户可以在NAS上重温红白机等经典游戏体验。

dgnankai的专栏 885

xcmp-queue与dmp-queue源码解析:Cumulus跨链消息队列的实现原理

Cumulus 是构建于 Substrate 之上的 Parachain 开发框架,其 `xcmp-queue` 与 `dmp-queue` 两个 Pallet 正是 Cumulus 跨链消息队列的核心实现:前者负责 Parachain 之间的横向消息(XCMP)收发与队列管理,后者负责来自 Relay Chain 的向下消息(DMP)执行与排队。本文从源码视角,讲清这两个模块背后的权重预算、背压

gitblog_00118的博客 367

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

跨链(6)波卡XCMP跨链通信协议

1. XCMP(Cross-chain Message Passing)跨链消息定义 跨链消息是跨平行链之间的消息,消息原文不上中继链(跨链交易的元数据上链) 任意两条平行链之间传递消息必须开一个通道(Channel) 2. 消息过程 收集人->验证人->中继链 某组验证人不是来自平行链,而是来自中继链统一管理的验证人池,通过随机分组指定给平行链。 3. 协议执行步骤 step1. 用户在A链上触发智能合约,在A链上发起交易,交易被收集人收集,生成一个候选区块,交给一组验证人去验证。

thefist的专栏 1345

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

波卡XCMP深度解析:跨链通信的核心标准与实战指南

优点:顶级安全性:共享安全模型提供了“开箱即用”的强安全保障,是新链的福音。无分叉升级:借助Substrate框架,平行链可以无缝升级,包括XCMP协议本身。高度集成与互操作:生态内链的互操作体验流畅,资产和数据移动如同在一条链上。清晰的治理与发展路线:由Web3基金会和Parity主导,技术路线图清晰,XCMP v2等升级值得期待。缺点与挑战:当前效率与成本:HRMP阶段对中继链资源占用大,通道开启和消息传递需要质押DOT,成本较高。生态准入有门槛。

551

深度学习工具包 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")

上一篇: 操作指南|如何在Moonbeam网络上质押GLMR以获得质押奖励
下一篇: Moonbeam技术解读|Frontier介绍、使用和未来(下)
Web3 MoonBuilder
博客等级 码龄5年 568粉丝 381原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值