打造强大的安全运营中心:解读 OSINT 工具

成长经历:浅谈OSINT认知 浅谈OSINT认知 前言 ​ OSINT这个词是在和一群大佬们的聊天过程中得知的,当时觉得这个陌生的名词好酷,或许对将来从事"hacker"一职有帮助,于是便去收集有关于OSINT的资料予学习。 ​ 这篇文章也是我第一次写blog,有问题请大家还多多包容。 何为开源网络情报? ​ OSINT全称Open source intelligence,中文名开源网络情报,是作为美国中央情报局(CIA)的一种情报收集手段,从各种公开的信息资源中寻找和收获有价值的情报。 ​ 对于网上的定义如下 面向适当用户,以其特定 阅读详情
AI摘要

本文探讨了OSINT(开源情报)在安全运营中心(SOC)中的重要性,包括威胁情报收集、攻击面检测、基础设施可视化等方面的应用。文章还介绍了常用的OSINT工具如Shodan、GoogleDorks、Maltego等,并强调了合法使用开源资源进行风险评估和安全策略改进的重要性。

什么是 OSINT?

OSINT 是开源情报(Open-Source Intelligence)的缩写。OSINT 的核心是开源,即尽可能利用可以合法获取的公开数据,这些数据包括互联网上的信息、公共记录、新闻文章、社交媒体平台、和一些免费商业数据源等等。

OSINT 一般被安全团队用来收集关于公司自身所面临的外部威胁 and 情报,它通过整合公开数据来辅助安全团队确定企业外部暴露出的足迹和攻击面。在网络安全中的 OSINT 常见用例就是威胁情报、攻击面、基础设施、漏洞等。

为什么需要在 SOC 中使用 OSINT?

一方面是付费的威胁情报源真不一定能满足企业对情报的需求,另一方面是安全团队也希望能通过开源情报工具来加强企业内部情报体系的建设,要知道很多时候当企业越做越大,安全团队可能陷入圈地自萌的状态,睁眼看世界很重要。一般在安全运营中心(SOC)中使用 OSINT 工具和技术能很大程度上加强企业的安全态势感知能力:

  • 威胁情报:安全团队用它研究最新的入侵技术、新兴威胁、漏洞和利用手段等。

  • 事件响应:在发生安全事故期间,OSINT 有助于团队快速收集有关指标的信息。

  • **攻击面检测:**检测企业暴露在外的开放端口、系统、子域资产等。

  • **基础设施可视化:**通过可视化工具(例如 Maltego)描绘基础设施和情报 or 入侵行为的关系,尽量保证资产的整体可见性。

  • **事故损失评估:**一旦发生入侵 or 数据泄露,通过搜索暗公共来源(暗网、论坛之类)中被出售的本公司数据来评估本次攻击造成的影响。

总之,整合 OSINT 可以为安全运营重心提供更丰富的上下文、可视化和深入调查能力,使其能够更好地准备、检测、响应和恢复。

OSINT 收集到的信息和目标

对于 SOC 团队来说,实际上大部分工作都在监控和调查可疑的安全事件和事故,当团队在寻找关于最新的攻击行为、在野漏洞、新木马新病毒新勒索团队时,OSINT 工具的便捷性和全面性就会体现出来。但是吧,OSINT 这类工具来只能收集公开可用的数据并生成相应的情报,有些口口相传或者朋友圈转来转去的信息它很难拿到,毕竟这些都属于私域流量,整体来看开源情报一般能收集到威胁情报类,例如正在被大范围利用的漏洞;域名和网络信息;公共资产对外暴露的信息;社交媒体和GitHub上暴露出和公司相关的信息;公开或者私密市场上的数据交易信息等等。

我们通过 OSINT 类工具想达成的目标是:通过合法手段收集上述外部情报;分析这些数据使企业自身能够持续评估风险、调整控制措施,并在动态威胁环境中改进整体安全态势。

建设 SOC 时用到的 OSINT 工具

在上家公司中我带队做 SOC 时,使用了一些 OSINT 工具来收集、分析和可视化安全情报。大概有这些:

OSINT Framework

OSINT Framework 是一个全面的、易用性极高的且免费开放的公共资源工具集合。它提供了一个结构化的资源库,包含各种OSINT工具和资源的链接,涵盖了不同的信息源和数据类型。这个框架由 Justin Nordine 创建并维护,广泛应用于网络安全、执法调查、数据分析等领域。

我强烈建议大家去体验一下,说它是无价之宝可能夸张了,但其价值显而易见。有很多时候,我想收集信息找不到工具就会来这里点点瞧瞧,看看有什么可用的。

Shodan

大名鼎鼎的 Shodan 就不用细说了,开源情报搜索引擎(类似国内的钟馗之眼 Zoomeye),我们经常利用 Shodan 收集有关IP、域名和漏洞信息,用起来很方便,就像用 Google 一样,初级用法就是直接搜索,高端一点就是写复杂的查询语句做筛选。

Google Dorks

我们知道谷歌是全世界最大的搜索引擎,大家会把很多合法的、不合法的、敏感的和不敏感信息都输入搜索框并点击 Search 按钮。同样,安全团队和入侵者也可以利用它来找到一些有漏洞的网站、数据库、监控摄像头、物联网设备,只需要使用一些特别的查询语句(常见的就是 site: filetype: inurl: intitle: 之类咯)就可以找到这些信息,这些语句被称为 Google Dorks。

例如,我可以使用 filetype:pdf site:123.com 可以查找 123.com 网站上的所有 PDF 文件。

TweetDeck(X Pro)

TweetDeck(现在叫 X Pro) 曾经是一款可定制的社交媒体仪表板,用于汇总来自 Twitter、Facebook、Instagram 等平台的实时信息。现在改了,改成了一坨翔(马斯克你不是人!!!),不过还有 Hootsuite、Buffer、Sprout Social 等工具能凑活用。

曾经的 TweetDeck 可以创建自定义 feeds 和警报,也能在一个大面板上监控漏洞的社区讨论、那家公司数据泄露了、哪家公司被勒索了等等,但是用这类工具的时候还是有点坑的,毕竟网络上的信息真真假假混杂在一起,可能有虚假信息和嘴炮侠,我们还是需要谨慎验证社交媒体上监控到的内容可信度。

Maltego

Maltego 是一款用于开源情报、取证及其他调查的链接分析软件,最初由南非比勒陀利亚的 Paterva 公司开发。Maltego 提供实时数据挖掘和信息收集,并以节点图形式展示这些信息,使信息间的模式和多层连接易于识别,可视化是它最大的优势。

Maltego 允许创建自定义实体,能够表示除软件基本实体类型以外的任何信息,它的主要功能是分析现实世界中的关系(社交网络、OSINT API、自托管私有数据和计算机网络节点),包括人、网页、域名、互联网基础设施甚至是社交媒体关联。而且它集成了很多在线数据源,开箱即用,很方便,缺点嘛,只有贵(当然这不一定是它的问题…

URL Scan

URL Scan 是在一个在隔离沙箱环境中渲染网站页面的在线工具,它能提取很多有用的元数据,见上图:例如如 cookie、加载的资源、跟随重定向、执行的脚本等,URL Scan 这个工具对于快速初步分析网站、域名和页面非常方便,而且它还可以共享报告,便于安全团队和其他团队协作完成某些工作。

SpiderFoot

SpiderFoot 被设计用于帮助用户通过多种数据源自动收集情报信息,并以结构化的方式呈现结果。它集成了几百个数据源,包括公共数据库、社交媒体、DNS记录、漏洞库等,我们使用的时候可以选择使用哪些数据源,能提高一点扫描的相关性和精准度。

收集完数据之后,还能通过图形化界面展示,例如用表格啊、图表啊、关系图啊之类的,便于我们识别信息之间的联系,还有导出 CSV 和 HTML 等功能。

FOCA

这东西用的不多,它可以提取文档和文件中的元数据和隐藏信息,例如提取文件中嵌入的元数据、作者信息、哈希值、URL、电子邮件等。这东西在遇到扫大量文档时可以用。但好久不更新了…

Trape

Trape 是一款网络追踪工具,能够实时追踪目标的地理位置、IP地址、浏览器信息等详细数据。我们可以发送包含 Trape 追踪代码的链接或网页,来监控目标的活动。它也有图形化的用户界面,操作算是方便。但是,Trape 的功能依赖于目标的网络连接,如果目标使用隐私保护技术或者工具之类的,追踪效果可能会受到影响。

但是有一点比较关键,对于这种对抗性质的跟踪,尤其是现在的隐私法规限制条件下,还是比较危险的…谨慎在产品中使用吧还是

**这些工具只能给安全团队用吗?
**

我觉得使用这些工具不必局限于安全领域。由于这些是开源工具,实际上任何人都可以使用这些开放源情报资源,OSINT 工具是多用途的,并不是局限于安全或者是计算机领域,它能灵活运用。例如说我是安永的商业分析师,我就可以用这些工具来扫情报找商业竞争对手的技术、基础架构、变更和产品对吧?

最后

没有任何公司能仅依靠内部和自身完成情报收集和体系建设,公开出来可以被随意访问的数据中实际上包含很多信息的,只是看你能不能用好。我们都知道,入侵前的踩点会经常用到 OSINT 工具来手机信息,那作为防御者,企业安全建设团队和安全运营也得通过使用开放数据来做到知己知彼。

最后的最后,我想说在使用这些工具时,必须确保合法、合规,特别是在大型公司更要注意这一点。

`黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

七大OSINT操作系统(开源网络情报) 维基百科将OSINT定义为从公开来源收集的数据,以用于情报环境,有多种资源和工具可帮助您找到此信息。但是,这些工具和资源分布在互联网的各个角落,大大增加了找寻搜集成本。这就是为什么人们想到将这些工具资源预装在OSINT操作系统上的原因。这里福韵数据为大家介绍7个常用的osint操作系统环境。 Kali Linux 最新版本中包含以下可用于OSINT的工具: acccheck,ace-voip,Amap,APT2,arp-scan,Automater,bing-ip2hosts,braa,CaseFile 阅读详情

相关推荐

掌握 OSINT:如何查其他人的信息

无论您是记者、调查员,还是只是对某个主题感兴趣的人,OSINT 技术都可以帮助您发现有价值的见解。haveibeenpwned.com 和 dehashed.com 等网站可以帮助查找涉及目标电子邮件的数据泄露,揭示他们正在使用或曾经使用过的服务。使用 Google Images、Bing Images 和 TinEye 执行反向图像搜索,识别图像的其他使用位置及其首次出现的位置。通过将这些 OSINT 技术和工具整合到您的研究过程中,您将能够找到任何人的详细和准确的信息,从而增强您在数字时代的调查能力。

u010291330的博客 1159

信息收集(OSINT)解释与实践-初

在我们的社会工程中,有许许多多的情报属于OSINT(开源情报)

m0_72532016的博客 2537

什么是OSINT?以及如何使用开源网络情报工具?

这里写自定义目录标题什么是OSINT开源网络情报?OSINT开源网络情报用于什么?什么是OSINT开源网络情报框架?其他OSINT开源网络情报工具,技术和资源结论 有针对性的挖掘目标情报,尽管有多种方法可以秘密进行,但情报收集通常始于从互联网公开资源中抓取信息,这些信息统称为开源网络情报或OSINT。由于社交媒体和在线活动的盛行,现在有大量合法可收集的OSINT开源网络情报可用,这可以为情报收集者...

开源网络空间情报 3924

开源情报 (OSINT)

开源情报 (OSINT)是出于情报目的收集和分析公开数据的行为。

网络研究观 7967

sn0int —半自动OSINT框架和程序包管理器-Rust开发

sn0int sn0int(发音为/snoɪnt/)是半自动的OSINT框架和程序包管理器。 它是为IT安全专业人员和漏洞猎手建立的sn0int sn0int(发音为/snoɪnt/)是半自动的OSINT框架和程序包管理器。 它是为IT安全专业人员和Bug猎手建立的,旨在收集有关给定目标或您自己的情报。 sn0int通过半自动处理公共信息并将结果映射为统一格式以进行后续调查来枚举攻击面。 sn0int当前能够进行以下操作:从证书透明度日志和被动日志中获取子域

SLOT:-SuperLazyOsintTool,正在制作中的“ OSINT”工具。 得益于Brainfucksec和arismelachroinos的启发,还有更多的启发!

| “ SLOT” | 超级懒惰工具| “ SLOT” | ...制作中的“ OSINT”工具... 要求: LazyScript。 Kalitorify。 配合末端。 侏儒终端。 Xterm。 Qterminal。 zsh。 Htop。 ^^ apt-get install或git clone from github.com ^^ 描述: 具有Kalitorify的OneDollarLiner SuperLazyLaunch-良好且懒惰的新鲜食品超出了带有樱桃的矩阵“脚本”! 由hashtag17th和scriptkewltweak制作。 LazyScript应该会自动启动。 如果不是,请执行以下操作:在脚本加载完Kalitorify并突出显示根窗口后,按小L键(l OR /.l) -当kalitorify和cmatrix在后台运行时,这将在新的根终端窗口中打开Lazy脚本(如果已安装)

美国情报人员使用的部分开源情报(OSINT)工具展示

本文作者:丁爸一、什么是开源情报(OSINT)?开源情报,通常缩写为OSINT,是合法地从公开和可公开获得的资源中收集的数据和信息。获取信息不需要任何秘...

blackorbird的博客 2万+

保姆级教程:从Navicat 11/12到15,平滑升级搞定MySQL 8.0的caching_sha2_password认证

本文提供从Navicat 11/12升级到15的保姆级教程,重点解决MySQL 8.0的caching_sha2_password认证问题。详细介绍了备份配置、新版本功能亮点、跨平台安装步骤、配置迁移流程以及高级使用技巧,帮助用户平滑过渡到Navicat 15,提升数据库管理效率。

weixin_33724046的博客 203

8种开源情报(OSINT)工具简介

简而言之,称为OSINT的开放源代码情报是指从公共资源中收集信息以在情报环境中使用它。从今天起,我们生活在“互联网世界”中,它对我们生活的影响将有利有弊。 使用互联网的优势在于,它可以提供大量信息,并且每个人都可以轻松访问。缺点是滥用信息并花费大量时间。 现在,出现了OSINT工具,这些工具主要用于收集和关联Web上的信息。信息可以各种形式获得;它可以是文本格式,文件,图像等。根据国会CSR报告,可以说,开源情报是从正确传播,收集和有效利用的公共信息中产生的。并使这些信息可供用户使用,以解决特定的...

whatday的专栏 3万+

无人机WIFI集群组网技术详解及成本分析

无人机WIFI集群组网技术是指利用无人机作为移动平台,通过集成高性能的WIFI模块,实现多架无人机之间以及无人机与地面控制站之间的无线通信组网。在协议层面,无人机WIFI集群组网需要遵循标准的无线通信协议,如IEEE 802.11系列(即WIFI标准),同时可能还需定制或优化路由协议、媒体访问控制(MAC)协议等,以确保高效、可靠的数据传输。数据安全与隐私保护:无人机集群组网中传输的数据可能涉及敏感信息,需采取加密、认证等安全措施,确保数据传输的安全性和用户隐私的保护。根据性能不同,价格差异较大。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1583

AD域控设置客户端桌面壁纸

此时再右键wallpaper文件夹,共享选项下的网络路径已经有了。找到该域下的组策略编辑器(第一步有)并按照图下所示找到桌面壁纸的策略设置,点击进去。在高级共享里可以设置共享名和同时共享的用户数量限制。点击下拉箭头,找到Everyone并选择,点击添加后,点击共享。然后可以看到刚才的新建文件夹策略在域控服务器和客户端都生效了。右键wallpaper文件夹->属性,点击共享选项,点击共享。在弹出的窗口里,按照图下所示设置,点击应用并且确认。在弹出的窗口里,按图示找到文件夹,右键新建文件夹。

欲买桂花同载酒的博客 6054

探索开源情报 (OSINT)

开源情报 (OSINT) 工具为有效收集和分析来自互联网的公开信息提供了宝贵的资源。

网络研究观 5162

保姆级教程:用Ansible 2.9自动化配置华为ENSP路由器(附Cloud连接避坑指南)

本文提供了一份详细的Ansible 2.9与华为ENSP路由器自动化配置教程,涵盖环境搭建、网络连通性配置、Playbook开发及典型问题排查。特别针对Cloud连接常见问题提供避坑指南,帮助运维工程师快速掌握网络自动化技能,提升工作效率。

weixin_42561476的博客 376

开源情报工具集:OSINT_Encyclopedia 介绍

开源情报工具集:OSINT_Encyclopedia 介绍 OSINT_Encyclopedia 是一个由 Optiv 维护的开源项目,旨在为开源情报(OSINT)操作提供一个全面的资源列表。该项目主要以 Python 编程语言为主。 项目基础介绍 OSINT(Open Source Intelligence)指的是从公开可获得的资源中收集情报信息的过程。OSINT_Encyclopedia 提供...

gitblog_00568的博客 692

Tina Linux WiFi驱动移植避坑指南:以RTL8733bs为例,详解设备树、Kconfig与固件依赖

本文详细解析了在Tina Linux上移植RTL8733bs WiFi驱动的关键步骤与常见问题,涵盖设备树配置、内核依赖、固件加载及启动时序等核心环节。通过实战案例和排查清单,帮助开发者规避SDIO控制器配置、电源管理、GPIO极性等典型陷阱,确保驱动稳定运行。

weixin_29164185的博客 263

【技术纵览】行为识别前沿模型演进:从CNN到多模态大模型

本文全面解析了行为识别技术从CNN到多模态大模型的演进历程,重点介绍了SlowFast、TimeSformer、VideoMAE和InternVideo等SOTA模型的核心创新与应用实践。通过对比分析各代模型在Kinetics-400等数据集上的表现,揭示了自监督学习和多模态融合如何推动行为识别准确率突破85%,并探讨了工业部署中的技术选型策略与优化方向。

weixin_29169505的博客 153

探索OSINT:一个开放源代码的情报收集工具

探索OSINT:一个开放源代码的情报收集工具 去发现同类优质开源项目:https://gitcode.com/ 在当今大数据时代,开放源情报(Open Source Intelligence, OSINT)已成为获取信息、监控趋势和进行风险评估的重要手段。而今天我们要介绍的是一个名为“OSINT”的开源项目,由sinwindie开发并托管在GitCode上。这个项目旨在帮助用户从公开网络中有效地提...

gitblog_00008的博客 1427

Mcgs 屏幕Modbus RTU通讯调试

昆仑通态屏幕作为Modbus Master 与 Modbus Slave通过RS485接口实现通信的调试记录

madao1234的博客 5570

开源情报(OSINT)工具全攻略:从基础搜索到自动化情报分析体系构建

◦ 核心语法:site:(限定域名)、filetype:(限定文件类型,如pdf、docx、txt)、inurl:(限定URL包含关键词)、intitle:(限定标题包含关键词)、-(排除关键词)、“”(精确匹配);从基础的搜索引擎语法,到进阶的自动化框架,再到专家级的可视化分析平台,工具的升级本质是效率与深度的提升。规划阶段:明确目标(梳理企业所有公开网络资产)、确定范围(域名、IP、子域名、联网设备)、选择工具(Amass、Censys、Shodan、SpiderFoot)。

从零开始,掌握网络安全。提供全面的网络安全教程、攻防演练技巧和行业动态。 2295

【图像去噪】基于加权核范数最小化算法实现图像去噪附matlab代码

1 简介 WNNM是一种约束矩阵奇异值稀疏性的低秩算法,在NNM理论基础上增加了核范数权重,有效利用了自然图像的先验信息并提高了核范数的灵活性. 2 部分代码 ​clcclear allclose allnSig = 100;O_Img = double(imread('Monarch.png'));​randn('seed', 0);N_Img = O_Img + nSig* randn(size(O_Img)); ..

qq_59747472的博客 3117

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

开源情报分析(OSINT)方法和工具

以下是几个常用的开源情报分析利用方法和工具

weixin_49844623的博客 3931

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

上一篇: 最经典的黑客入门教程(安全必备技能)
下一篇: 运维工作真的那么苦b吗?
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值