OpenArk:Windows内核级系统安全与深度分析工具实战指南

OpenArk:Windows内核级安全与逆向分析平台实战指南 在Windows系统安全与逆向工程领域,理解内核机制是深入分析恶意软件、排查系统疑难问题的关键。内核作为操作系统的核心,负责管理进程、内存、驱动等核心资源,其安全机制直接影响整个系统的稳定与防护能力。通过内核级工具,研究人员能够绕过常规用户态限制,直接与系统底层交互,从而获得更高的分析权限和更全面的系统视角,这对于检测高级威胁、分析复杂漏洞具有不可替代的技术价值。OpenArk正是这样一款开源的Windows内核安全与逆向分析平台,它通过加载自研驱动,实现了对进程管理、钩子扫描、内核模块查看等核心功能的深度 阅读详情

1. 项目概述:为什么我们需要OpenArk这样的工具?

在Windows系统的日常使用、开发调试乃至安全分析中,我们常常会遇到一些“黑盒”时刻。某个进程莫名其妙地占用大量CPU,一个陌生的服务在后台悄悄运行,或者一个看似无害的软件却在偷偷修改注册表关键项。对于普通用户,这可能意味着电脑变慢、广告弹窗;对于开发者,这可能是软件冲突的根源;对于安全研究者,这更可能是一个恶意行为的蛛丝马迹。传统的任务管理器、资源监视器,甚至一些系统自带的工具,往往只能提供冰山一角的信息,缺乏深度、关联性和可操作性。

这就是OpenArk诞生的背景。它不是一个简单的进程查看器,而是一个旨在“打开方舟”,深度探索Windows系统内核与用户态运行状态的综合平台。我第一次接触OpenArk,是在分析一个顽固的广告软件时。常规的杀毒软件能清除其文件,但重启后它又“死灰复燃”。用OpenArk的进程、模块、句柄和驱动综合视图,我迅速定位到了一个伪装成系统服务的驱动级守护进程,以及它通过进程镂空(Process Hollowing)技术注入到合法进程中的恶意线程,最终实现了彻底清理。这次经历让我意识到,一个集成了逆向工程思维的系统工具,对于理解和解构Windows系统行为是多么高效。

简单来说,OpenArk是一款面向Windows平台的开源系统安全与内核分析工具。它的核心用户画像非常清晰: 逆向工程师、恶意软件分析师、高级系统管理员以及对Windows底层机制有浓厚兴趣的开发者 。对于普通用户,它提供了远超系统自带工具的恶意软件检测与清理能力;对于专业人士,它则是一个强大的实时分析沙箱,能够透视进程、线程、模块、句柄、内存、内核对象、网络、注册表等几乎所有的系统活动。它解决的核心问题是:在Windows这个复杂的生态中,如何快速、准确、深度地洞察“正在发生什么”,以及“为什么会发生”。

2. OpenArk的三大核心优势深度解析

市面上系统工具不少,从老牌的Process Explorer、Process Hacker,到系统自带的性能监视器,各有侧重。OpenArk能脱颖而出,成为许多安全从业者的“瑞士军刀”,靠的绝不是功能的简单堆砌,而是其背后独特的设计哲学与实现路径。下面,我们就来逐一拆解它的三大核心优势。

2.1 优势一:内核级深度检测与无驱化架构

这是OpenArk最硬核、也最区别于大多数用户态工具的特点。传统的安全工具,包括很多知名的ARK(Anti-Rootkit)工具,其工作模式可以概括为“用户态程序 + 内核驱动”。工具主体运行在用户态(Ring 3),当需要执行一些高权限操作,如读取受保护的内存、枚举隐藏的进程或钩子时,就通过加载一个自己签名的内核驱动(Ring 0)来实现。这种模式有两个显著的痛点:

  1. 驱动签名问题 :在Windows Vista之后,特别是64位系统上,加载未经过微软WHQL认证的驱动越来越困难。用户需要手动关闭驱动强制签名(Test Mode),这不仅麻烦,而且降低了系统安全性。
  2. 对抗与兼容性问题 :恶意软件会主动检测并对抗这些已知的ARK工具驱动,甚至通过卸载或破坏驱动来使工具失效。同时,不同系统版本(如Win10 21H2和Win11 23H2)内核结构可能有差异,驱动需要持续维护以保持兼容性。

OpenArk的创新之处在于,它探索并实践了“无驱化”(Driverless)或“最小化驱动依赖”的深度检测路径。它如何做到?

  • 利用合法的系统调用接口 :OpenArk大量使用了Windows原生提供的、合法的底层调试与信息查询接口。例如,它通过 NtQuerySystemInformation 这个Native API,配合正确的信息类(如 SystemProcessInformation , SystemHandleInformation ),可以直接从内核获取进程、线程、句柄的详细信息,绕过了用户态的一些抽象层和过滤机制。
  • 内存直接读取(Read Process Memory) :结合调试权限(SeDebugPrivilege),工具可以打开其他进程,直接读取其内存空间。通过解析进程环境块(PEB)、线程环境块(TEB)等关键数据结构,它能重建出进程加载的模块列表(包括那些通过反射式DLL注入、不被常规API枚举的模块)。
  • 对象管理器命名空间遍历 :Windows内核有一个全局的“对象管理器”,所有进程、线程、文件、注册表键、事件等都被抽象为对象,并有一个路径。OpenArk可以通过 NtQueryDirectoryObject 等函数遍历 \ 目录,直接查看所有内核对象,这能发现一些隐藏的或没有公开句柄的对象。

实操心得 :获取 SeDebugPrivilege 权限是OpenArk许多高级功能的前提。通常,你需要以管理员身份运行OpenArk。如果某些功能依然受限,可以检查一下组策略或安全软件是否限制了调试权限。一个快速验证方法是,用OpenArk尝试打开 csrss.exe 或 winlogon.exe 这类受保护的系统进程,如果能成功读取其模块列表,说明权限已足够。

这种无驱化架构带来的好处是巨大的: 兼容性极佳 ,只要能以管理员身份运行,就能在从Win7到最新Win11的广泛系统上工作; 对抗性更强 ,因为没有加载一个明显的“靶子”(驱动),使得基于驱动特征检测的恶意软件更难发现和对抗它; 部署简单 ,一个单独的EXE文件就能运行,无需安装驱动,对系统侵入性小。

2.2 优势二:一体化、关联性的系统视图

很多工具功能单一,进程查看器只管进程,启动项管理器只管启动项。当分析一个复杂问题时,你不得不在多个工具间来回切换,手动关联信息,效率低下且容易遗漏。OpenArk的设计哲学是提供一个“上帝视角”的、一体化的系统工作台。

它把Windows系统运行时的主要维度,全部整合在一个界面清晰、逻辑关联的视图中:

  1. 进程管理器 :这不仅是进程列表。点击任意进程,你可以联动看到:
    • 模块 :该进程加载的所有DLL和驱动,包括基址、大小、路径。特别有用的是,它能高亮显示那些从非标准路径(如Temp目录)加载的模块,这是恶意代码的常见特征。
    • 句柄 :该进程打开的所有内核对象句柄——文件、注册表键、线程、事件、互斥体等。通过句柄列表,你可以清晰看到一个进程正在访问哪些系统资源。例如,一个浏览器进程打开了哪些文件,一个可疑进程持有了哪些注册表键的写权限。
    • 内存 :可以查看进程的虚拟内存区域(VAD),分析内存属性(可读、可写、可执行),这对于检测内存中注入的Shellcode或分析漏洞利用过程至关重要。
    • 线程 :查看进程的所有线程,包括起始地址、调用栈(Stack Trace)。通过调用栈,你可以逆向推断出线程正在执行哪个模块的哪个函数,对于分析卡死、高CPU占用或恶意行为非常有帮助。
  2. 内核模块与驱动 :独立列出所有加载
彻底解决Windows Defender误报OpenArk等系统工具:添加排除项终极指南 在系统安全领域,误报(False Positive)是安全软件基于行为启发式分析和机器学习模型进行威胁检测时常见的问题。其原理在于,安全软件会监控程序的静态特征与动态行为,当检测到某些高风险行为模式(如内核对象操作、进程注入、加载未签名驱动)时,即使程序本身是合法的系统工具或调试软件,也可能因行为特征与恶意软件高度重叠而被判定为威胁。这种机制虽然提升了整体防护能力,但也给逆向分析、系统底层调试等专业工作带来了困扰,因为像OpenArk这类工具的正常功能常因此被拦截。从技术价值看,解决误报的核心是在不降低系统 阅读详情

相关推荐

Windows 10下用OpenArk64.exe揪出并干掉IDEA快捷键冲突的“元凶”(保姆级图文)

本文详细介绍了在Windows 10系统下使用OpenArk64工具解决IDEA快捷键冲突问题的完整流程。通过内核级侦查技术,帮助开发者精准定位并消除被系统或其他程序占用的热键,恢复IDEA的高效编码体验。文章包含从工具获取、热键扫描到冲突解决的保姆级图文教程,特别适用于JetBrains系列IDE用户。

weixin_42522669的博客 494

效率革命:用OpenArk重构你的Windows快捷键生态体系

本文探讨了如何利用OpenArk工具重构Windows快捷键生态体系,解决热键冲突问题并提升工作效率。通过详细的部署策略、冲突治理方案和个性化热键优化,帮助专业用户构建高效协同的快捷键系统,特别适用于Windows 11环境下的多软件操作场景。

weixin_29215815的博客 414

从内核视角揭秘:OpenArk如何成为Windows快捷键管理的终极利器

本文深入解析OpenArk如何通过内核级技术解决Windows系统中的快捷键冲突问题。作为一款开源工具,OpenArk直接访问Windows内核数据结构,提供全面的热键管理方案,特别适用于Windows 11环境下的复杂热键冲突排查与优化。

weixin_29290379的博客 446

效率革命:用OpenArk构建个性化快捷键生态的五大创意实践

本文探讨了如何利用OpenArk在Windows 11系统中构建个性化快捷键生态的五大创意实践。通过解决热键冲突、设计情境化快捷键体系、实现跨软件宏指令、支持团队协同配置以及构建抗升级的快捷键系统,OpenArk帮助用户大幅提升工作效率。文章特别强调了内核级热键扫描和情境感知功能在优化工作流程中的关键作用。

weixin_29228781的博客 360

别再用任务管理器了!用OpenArk 1.3.0一键揪出Windows上抢你快捷键的‘流氓软件’

本文介绍如何使用OpenArk 1.3.0内核级工具解决Windows快捷键冲突问题。通过深度扫描系统热键注册信息,精准定位并禁用冲突的快捷键组合,提升工作效率。文章详细解析了OpenArk的安装配置、热键扫描技巧及典型冲突场景的解决方案,是Windows用户必备的系统优化指南。

weixin_30945039的博客 295

深入剖析与精准定位:使用OpenArk64根除IDE快捷键冲突

本文深入探讨了使用OpenArk64解决IDE快捷键冲突的实用方法。通过分析系统级热键冲突的根源,详细介绍了如何利用OpenArk64这一开源工具精准定位并解决快捷键冲突问题,包括工具获取、配置使用及高级排查技巧,帮助开发者提升工作效率。

weixin_33695450的博客 518

除了查热键,OpenArk这个Windows开源神器还能帮你做什么?逆向与系统维护实战指南

OpenArk是一款功能强大的Windows开源神器,最初以解决热键冲突问题闻名,但其实际功能远不止于此。本文深入探讨了OpenArk在系统维护、逆向工程和安全研究中的高阶应用,包括进程分析、PE文件解析、系统修复和反Rootkit实战等,帮助用户全面解锁这款工具的全能玩法。

weixin_42523326的博客 262

Windows 11热键冲突别抓狂!用OpenArk一键揪出‘元凶’并释放你的Ctrl+C

本文详细介绍了如何使用OpenArk工具解决Windows 11中的热键冲突问题。通过内核级访问和完整的热键注册信息展示,OpenArk能精准定位冲突源头,并提供删除、修改或映射热键的解决方案,帮助用户恢复高效的快捷键操作体验。

weixin_31240035的博客 316

Windows全局热键冲突别抓瞎,用OpenArk 64位版一键揪出幕后程序(附输入法排查技巧)

本文详细介绍了Windows系统中全局热键冲突的排查方法,重点推荐使用OpenArk 64位版进行内核级扫描,帮助用户快速定位并解决热键冲突问题。文章还提供了输入法排查技巧和深度排查策略,确保用户能够高效解决各类热键冲突问题,提升工作效率。

weixin_28595749的博客 463

Hive学习之抽样(Sampling)

当数据量特别大时,对全体数据进行处理存在困难时,抽样就显得尤其重要了。抽样可以从被抽取的数据中估计和推断出整体的特性,是科学实验、质量检验、社会调查普遍采用的一种经济有效的工作和研究方法。 Hive支持桶表抽样和块抽样,下面分别学习。所谓桶表指的是在创建表时使用CLUSTERED BY子句创建了桶的表。桶表抽样的语法如下: table_sample: TABLESAMPLE (BUCKET x

skyWalker_ONLY 2万+

基于Java17、SpringBoot、vue3、antdv-next、uniapp等主流技术构建的全场景极速开发平台 MDP内置3个web端、1个移动端 重点解决用户中心、开发者平台、管理后台3个应

MDP-主数据平台,后端项目。专注于单点登录解决方案。内置用户中心、开发者平台、管理后台3个应用。包含:单点登录、Oauth2 登录、用户身份管理、应用申请、应用接入、主数据维护、主数据订阅、主数据广播、应用接口调用、接口管理管理和查看、系统配置等功能。

Win7时间修复(时间错误修复文件)

运行方法:解压后运行reg文件即可。 支持的Win7版本: 1. Windows 7 Starter(入门版 / 初级版) 2. Windows 7 Home Basic(家庭普通版) 3. Windows 7 Home Premium(家庭高级版) 4. Windows 7 Professional(专业版) 5. Windows 7 Enterprise(企业版) 6. Windows 7 Ultimate(旗舰版) 7. Windows 7 Professional for Embedded Systems(嵌入式专业版) 8. Windows 7 Ultimate for Embedded Systems(嵌入式旗舰版)

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?.docx

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?

usb 扩容盘检测修复工具源码,编译产物

usb 扩容盘检测修复工具源码,编译产物

融合UWB和IMU割草机定位EKF研究(Matlab代码实现)

内容概要:本文主要介绍了一个名为“Plecs全桥LLC谐振变换器仿真模型”的技术资源,该资源聚焦于电力电子领域中的LLC谐振变换器建模与仿真,涵盖开环、闭环控制、软启动设计及参数优化等核心内容。文档不仅提供了LLC变换器的详细建模方法与仿真案例,还系统梳理了其在高效电源转换系统中的应用,包括隔离型全桥拓扑结构的设计与性能分析。此外,资源汇总了大量Matlab/Simulink仿真模型及相关科研方向,涉及新能源并网、储能控制、电机驱动等多个前沿领域,全面展示LLC谐振变换器在现代电力系统中的关键技术实现路径。同时,文档附带多种学习资料获取途径,如网盘链接和公众号资源,便于研究人员深入实践与拓展研究。; 适合人群:具备扎实的电力电子、自动控制理论基础,从事新能源发电、开关电源设计、电力系统仿真等相关领域的研究生、工程师及科研人员。; 使用场景及目标:①深入理解LLC谐振变换器的工作原理、建模方法与控制策略;②开展电力电子变换器的仿真验证与参数优化设计;③支撑科研项目、学位论文或工程项目的系统仿真与方案验证; 阅读建议:建议结合所提供的仿真模型与参考文献,使用Plecs或Simulink软件进行动手实践,重点掌握LLC谐振变换器的建模流程、闭环控制设计、软启动机制及参数调试技巧,以全面提升在实际工程中的应用与创新能力。

基于变频控制的多相交错LLC谐振变换器闭环仿真(Simulink仿真实现)

基于变频控制的多相交错LLC谐振变换器闭环仿真(Simulink仿真实现)内容概要:本文主要介绍了基于Plecs的全桥LLC谐振变换器仿真模型,涵盖变频控制下的多相交错LLC谐振变换器闭环仿真、V2G电动汽车ACDC整流与双向CLLC谐振变换器充放电仿真、LLC谐振变换器的开环与闭环软启动设计,以及储能系统中双向Buck-Boost变换器结合模型预测电流控制和电压下垂控制的仿真研究。同时,文档列举了多种电力电子系统与控制策略的Simulink/Plecs仿真案例,涉及三相交错并联Buck变换器、三电平Buck直流变换器、单相Boost PFC电路等,展示了丰富的电力变换器建模与控制技术。此外,还包括参数设计报告、计算书及相关参考文献,适用于从事电力电子、新能源发电、电动汽车充放电系统等领域的研究人员和技术开发人员。; 适合人群:具备电力电子、自动控制理论基础,从事新能源、电动汽车、电力系统等相关领域研究的研发人员、高校研究生及高年级本科生。; 使用场景及目标:① 学习和掌握LLC谐振变换器及其他典型电力电子变换器的工作原理与建模方法;② 实现闭环控制策略如变频控制、软启动、模型预测控制、下垂控制等的仿真验证;③ 支持科研项目、毕业设计或工程开发中的系统仿真与优化设计。; 阅读建议:建议结合文中提供的仿真模型、设计报告与参考文献,逐步搭建并调试相应系统,重点关注控制策略的实现细节与参数整定过程,以深入理解系统动态响应特性与控制性能。

Unity简单操作:PostProcessing的使用

Postprocessing是一个unity2018版本的集成后期插件,有了这个插件,之后用unity开发时,后期调整颜色、光晕等会很方便。 目录 新建一个postprocessing profile(配置文件)。​ 参数说明: 新建一个postprocessing profile(配置文件)。 在主相机下加一个组件PostProcess Layer。 注意:需要将相机的Layer层设置与Post Process Layer 下的Volume blending(体积混合)...

weixin_39114763的博客 7369

3D视觉-结构光测量-线结构光测量

线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵CCD作为接受器件,因此只要通过增加垂直于面阵探测器的第三维度方向,就可以实现对三维物体的测量。

qq_20660115的博客 3132

搭建云平台 1 Day 虚拟机安装(超详细)

点击OFF 那个按钮看看网络的地址和速度有没有显示,如果有 则到目前为止都是成功的。Host name随便起一个名字就行了**-_-**文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**,如果我们安装的VMware14就会默认为。因为我的是VMware16,所以默认。也是可以的,但是千万不要用。

2401_84009679的博客 563

【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码

大家好,我是阿光。本专栏整理了《深度学习100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。正在更新中~ ✨。

优快云 精品推荐 10万+

机械式激光雷达实现原理以及特性总结

本文介绍了机械式激光雷达的技术原理和核心特性。该技术通过机械旋转结构实现360°三维扫描,采用飞行时间法测距并生成点云数据。核心优势包括全向扫描、长距高精度和成熟度高,但存在体积大、成本高、可靠性受限等局限。典型应用于自动驾驶测试车、测绘建模等领域。与固态激光雷达相比,机械式在视场角和探测距离方面有优势,但在体积、成本和可靠性方面处于劣势。该技术目前主要应用于对成本不敏感的专业场景。

start_up_go的博客 262

05 SAP CPI 访问第一个CPI接口

其中的clientid的值可作为Basic验证的用户名,clientsecret的值可作为Basic验证的密码。点击SEND按钮,可看见返回状态为200 OK。在04中,我们得到TOKEN令牌。POSTMAN向下滚动。点击按钮获取token。

SAP CPI 663

YOLOv8 WIOU

本文介绍了如何在YOLOv8中实现WIOU(Weighted Intersection over Union)的修改方法。主要修改了ultralytics/utils/metrics.py文件中的bbox_iou函数,新增了WIoU_Scale类,支持单调性FM v2、非单调性FM v3两种模式,并提供了动态调整的动量参数。修改后的函数支持多种IoU变体(GIoU、DIoU、CIoU等),通过数学公式实现了更精确的边界框回归损失计算,特别针对小目标检测场景进行了优化。该实现使用了PyTorch框架,包含完整

FJN110的博客 2055

告别 GENERATE_SUBPOOL_DIR_FULL:用 RTTC 平替 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 的一套更稳方案

文章摘要:本文探讨了ABAP开发中动态内表的创建问题,重点分析了使用CL_ALV_TABLE_CREATE方法可能遇到的GENERATE_SUBPOOL_DIR_FULL错误。该错误源于临时subroutine pool的36次创建上限,常在批量处理或频繁调用时出现。文章提出基于RTTC技术的替代方案ZCL_ALV_TABLE_CREATE_RTTC,通过运行时类型服务直接创建动态内表,无需生成临时代码,从而规避了资源限制。该方法保持接口兼容性,只需简单替换类名即可实现无缝迁移,是解决动态表创建瓶颈的有效方

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 225

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 讯飞星辰调用Qwen3.6-35B-A3B实现长上下文稳定推理教程
下一篇: macOS自带sips命令批量转换HEIC到JPG(保EXIF+色域)
blackproof
博客等级 码龄17年 12粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值