小白学安全--web安全入门(非常详细)零基础入门到精通,收藏这一篇就够了

小白学网络安全要学些什么? 虽然网上已经有非常多的学习路线了,但是仍然有很多零基础的小白还是不懂网络安全到底应该要怎么去学习,我也经常会在后台收到这样的问题“我想学网络安全,需要先学编程语言吗?”、“学渗透就业会不会很难?”等等类似的问题 阅读详情

作为一个从知道创与到自建安全团队的资深白帽子,一路也是从不止所谓的web小白历经磨难成长起来的我,给现在正在准备学习web安全的同学一些建议。在我认为,渗透安全的范围其实要学习的东西很广泛的,间接的相当于你要是一个前端工程师,也要是一个后端工程师(其中就包含主流的php,JAVA,python等),如果学习移动端安全,你还要是一个出色的安卓工程师,而网络安全又细分为很多方向,比如系统安全、移动安全、无线安全、web安全等。

作为还没接触或者刚刚接触渗透测试,或者安全方面的同学来说,这里建议你们可以从web安全开始学,web安全领域相对来说比较好入门,后续如果要转的话,无论是转前端还是转后端都是比较吃香的,其实对于没有学习过来说呢,入门是相对来说友好一些的。我刚开始的时候也是从web安全开始入手的,后续的介绍与相关教学也会以web安全为主。

第一课就先以介绍为主,如何上车web网络安全

01对于系统的操作

首先要熟悉的就是各种操作系统,这里主推centos,因为无论是企业还是个人网站,用的最多的都是以centos作为操作系统运行服务器,有能力的可以玩一下kali系统,里面集成了很多渗透测试软件。

02数据库的学习

针对于web漏洞中的SQL,例如:MySQL数据库的基本操作

Sqlmap sql注入工作的操作,著名的自动化sql注入工具,可以找到漏洞,并直接查看数据

03进行web安全渗透

熟悉常见的web攻击类型,有机会可以直接进行实战01:注入漏洞

1)SQL注入(SQL Injection)

由于程序对SQL相关的一些敏感字符缺少过滤or转换,攻击者把SQL命令插入到用户提交的数据中,欺骗服务器执行恶意的SQL命令,非法获取到内部权限和数据。

风险:读取or篡改数据库的数据,获取服务器or管理员权限

类型:

a、数据型

b、字符型

其他注入方式

c、伪静态注入

d、GET & POST注入

e、Cookie注入

2)SQL盲注(SQL Blind Injection)

a.基于布尔的盲注[Boolean-Based]

SQL注入过程中,应用程序仅仅返回True页面和False页面,无法根据应用程序的返回页面得到数据库信息,但可通过构造逻辑条件(如比较大小)向服务端请求后的返回页面来分析判断我们所需要的数据库信息。

b.基于时间的盲注[Time-Based]

注入的SQL代码影响后台数据库的功能,但此时Web的前端页面始终显示True页面,知识页面返回的响应时间有差异,可以根据时间差来推断注入语句中的判断条件真假,继而获取数据库相关的信息。

3)OS命令注入

OS Command Injection,当应用程序使用外部输入的字符串,or使用受外部影响的字符串来组装命令时,若没有进行安全过滤防范,可能产生OS命令的注入攻击,甚至操作服务器相关的权限。

4)Xpath注入

利用XPath解析器的松散输入和容错特性,能够在URL、表单或其它信息上附带恶意的XPath查询代码,以获得权限信息的访问权并更改这些信息。

02:失效的身份认证和会话管理

用户身份认证和会话管理是一个应用程序中最关键的过程,有缺陷的设计会严重破坏这个过程。在开发Web应用程序时,开发人员往往只关注Web应用程序所需的功能,通常会建立自定义的认证和会话管理方案。但要正确实现这些方案却很难,结果这些自定义的方案往往在如下方面存在漏洞:退出、密码管理、超时、记住我、密码问题、帐户更新等。

03:敏感信息泄露

在最近几年,这是最常见的、最具影响力的攻击。这个领域最常见的漏洞是不对敏感信息进行加密。在数据加密过程中,常见的问题是不安全的密钥生成和管理以及使用弱加密算法、弱协议和弱密码。特别是使用弱的哈希算法来保护密码。

攻击者不是直接攻击密码,而是在传输过程中或从客户端(例如:浏览器)窃取密钥、发起中间人攻击,或从服务器端窃取明文数据。

04:XML外部实体(XXE)

默认情况下,许多旧的XML处理器能够对外部实体、XML进程中被引用和评估的URI进行规范。如果攻击者可以上传XML文档或者在XML文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,他们就能够攻击含有缺陷的XML处理器。

XXE缺陷可用于提取数据、执行远程服务器请求、扫描内部系统、执行拒绝服务攻击和其他攻击。

05:失效的访问控制

由于缺乏自动化的检测和应用程序开发人员缺乏有效的功能测试,因而访问控制缺陷很常见。访问控制检测通常不适用于自动化的静态或动态测试。手动测试是检测访问控制缺失或失效的最佳方法,包括:HTTP方法(如:GET和PUT)、控制器、直接对象引用。

攻击者可以冒充用户、管理员或拥有特权的用户,或者创建、访问、更新或删除任何记录。

06:安全配置错误

安全配置错误可以发生在一个应用程序堆栈的任何层面,包括网络服务、平台、Web服务器、应用服务器、数据库、框架、自定义代码和预安装的虚拟机、容器和存储。自动扫描器可用于检测错误的安全配置、默认帐户的使用或配置、不必要的服务、遗留选项等。

通常,攻击者能够通过未修复的漏洞、访问默认账户、不再使用的页面、未受保护的文件和目录等来取得对系统的未授权的访问或了解。

07:跨站脚本(XSS)

XSS是OWASP Top10中第二普遍的安全问题,存在于近三分之二的应用中。由于程序缺少对某些敏感字符的过滤or转换,攻击者对在url或输入框中输入HTML/JS恶意代码提交成功后并被执行,获取用户or程序敏感信息。

XSS对于反射和DOM的影响是中等的,而对于存储的XSS,XSS的影响更为严重,譬如在受攻击者的浏览器上执行远程代码,例如:窃取凭证和会话或传递恶意软件等。

08:不安全的反序列化

反序列化漏洞有十年的历史,存在于不同的编程语言中,最为明显的当属Java、PHP、Python、Ruby。漏洞的本质就是反序列化机制打破了数据和对象的边界,导致攻击者注入的恶意序列化数据在反序列化过程中被还原成对象,控制了对象就可能在目标系统上面执行攻击代码。

09:使用含有已知漏洞的组件

这种安全漏洞普遍存在。基于组件开发的模式使得多数开发团队不了解其应用或API中使用的组件,更谈不上及时更新这些组件了。如Retire.js之类的扫描器可以帮助发现此类漏洞,但这类漏洞是否可以被利用还需花费额外的时间去研究。

10:不足的日志记录和监控

对不足的日志记录及监控的利用几乎是每一个重大安全事件的温床。攻击者依靠监控的不足和响应的不及时来达成他们的目标而不被知晓。

根据行业调查的结果,此问题被列入了Top10。判断你是否有足够监控的一个策略是在渗透测试后检查日志。测试者的活动应被充分的记录下来,能够反映出他们造成了什么样的影响。

多数成功的攻击往往从漏洞探测开始。允许这种探测会将攻击成功的可能性提高到近100%;据统计,在2016年确定一起数据泄露事件平均需要花191天时间,这么长时间里损害早已发生。

11:跨站请求伪造(CSRF)

CSRF是利用某些web应用程序允许攻击者预测一个特定操作的所有细节。由于浏览器自动发送会话cookie等认证凭证,攻击者能创建恶意web页面产生伪造请求。这些伪造请求很难与合法请求区分开。

攻击者能欺骗受害用户完成该受害者所允许的任意状态改变的操作,比如:更新帐号细节,完成购物,注销甚至登录等操作。

12:未验证的重定向和转发

应用程序经常将用户重定向到其他网页,或以类似的方式进行内部转发。有时,目标网页是通过一个未经验证的参数来指定的,这就允许攻击者选择目标页面。

攻击者链接到未验证的重定向并诱使受害者去点击。由于是链接到有效的网站,受害者很有可能去点击。攻击者利用不安全的转发绕过安全检测。

这种重定向可能试图安装恶意软件或者诱使受害者泄露密码或其他敏感信息。不安全的转发可能允许绕过访问控制。

12:弱口令漏洞

弱口令(weak password) ,没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令,如:生日、名字、简单的顺序数字or字符。

13:文件上传漏洞

文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。大多数的上传漏洞被利用后攻击者都会留下WebShell以方便后续进入系统。攻击者在受影响系统放置或者插入WebShell后,可通过该WebShell更轻松,更隐蔽的在服务中为所欲为。

WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称之为一种网页后门。攻击者在入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器web目录下正常的网页文件混在一起,然后使用浏览器来访问这些后门,得到一个命令执行环境,以达到控制网站服务器的目的(可以上传下载或者修改文件,操作数据库,执行任意命令等)。

14:缓冲区溢出

在计算机内部,输入数据通常被存放在一个临时空间内,这个临时存放的空间就被称为缓冲区,缓冲区的长度事先已经被程序或者操作系统定义好了。向缓冲区内填充数据,如果数据的长度很长,超过了缓冲区本身的容量,那么数据就会溢出存储空间,而这些溢出的数据还会覆盖在合法的数据上。

操作系统所使用的缓冲区又被称为堆栈,在各个操作进程之间,指令被临时存储在堆栈当中,堆栈也会出现缓冲区溢出。当一个超长的数据进入到缓冲区时,超出部分就会被写入其他缓冲区,其他缓冲区存放的可能是数据、下一条指令的指针,或者是其他程序的输出内容,这些内容都被覆盖或者破坏掉。

15:业务逻辑漏洞

业务逻辑问题是一种设计缺陷,逻辑缺陷表现为设计者或开发者在思考过程中做出的特殊假设存在明显或隐含的错误。攻击者会特别注意目标应用程序采用的逻辑方式,设法了解设计者与开发者做出的可能假设,然后考虑如何攻破这些假设。攻击者挖掘逻辑漏洞有两个重点:业务流程、http/https请求篡改。

业务逻辑漏洞经常出现的场景为:账户(注册/登录/密码找回)、交易、支付、个人信息修改。

04各种的搜索引擎的使用技巧:

Google、FOFA、shodan、zoomeye等搜索引擎的使用技巧来进行资产的收集,在做前期的渗透信息收集的时候,是非常重要的。可以去搜一下谷歌黑客语法,有些直接可以搜出网站登陆后台,再用简单的sqlmap直接跑注入,一些简单的网站直接就能改破解了。

05 HTML5、css3、PHP

在进行学习web渗透之前呢,需要简单了解一下语言HTML5、css3、PHP ,这些语言对于了解web安全漏洞有很大的帮助的。

06 要掌握基本的几种黑客工具的使用:

AWVS、appscan、nmap、burpsuite、sqlmap、xray、Metasploit、浏览器代理、各种语言的小马大马、蚁剑等工具的使用07 对于一些网站的基础框架要有一定的了解:TP、DZ、WP、织梦、帝国、structs、ecshop、等常见的网站框架要了解08 Linux渗透进阶知识:Linux下手动查杀木马过程-使用rootkit隐藏踪迹的审计方法,主要有模拟木马程序病原体并让木马程序自动运行的代码审计,木马父进程实时监控木马的原理及防御方法,创建一个让root用户都删除不了的木马程序的原理及防御方法,深入讲解如何不让木马程序和外网数据主动通信,使用rootkit把木马程序的父进程和木马文件隐藏的审计方法,使用rkhunter Rootkit猎手来检查rootkit,还有Linux下的手工提权原理-劫持账号和密码审计及防御方法-Tripwire检查文件。以上的web渗透安全相关的知识点,建议大家先去了解这些漏洞出现的原因,再去学习攻击这些漏洞,最后的最后才是学习如何去防范这些漏洞,这其中,几乎每一步都是难的,了解漏洞出现的原因,在你看到一个系统之后,你根本发现不了漏洞,更无法去了解他出现的原因了,常见的攻击思路是使用常见的漏洞攻击方式,一步步的去试(现在大部分后台框架都已经集成了常见攻击方式的防范策略,更高级的方式等待你们去开发),其中也包含一些社会工程学的应用,比如诱导邮件之类的,总之,网络攻防就像是一场战役,没有绝对安全的系统,一切都等待你们去发掘。

后续公众号会制作一个简单的实战靶场,以闯关的方式,让你们更清楚的了解各种攻击方式,以便更好的学习攻防技巧。

(失踪人口回归,这几天已经把账号托管给几个认识的朋友运营,自己也会参与到账号的运营中来,以便提供更加优质的文章与实战平台。)

为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

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

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


在这里插入图片描述

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

[2024最新优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]
在这里插入图片描述
在这里插入图片描述

浅谈Web安全技术----RBI RBI(Remote Browser Isolation),中文翻译过来叫远程浏览器隔离技术 阅读详情

相关推荐

还在为不知道怎么学习网络安全而烦恼吗?这篇文带你从入门级开始学习网络安全—认识网络安全

随着网络安全被列为国家安全战略的一部分,这个曾经细分的领域发展提速了不少,除了一些传统安全厂商以外,一些互联网大厂也都纷纷加码了在这一块的投入,随之而来的吸引了越来越多的新鲜血液不断涌入。 不同于Java、C/C++等后端开发岗位有非常明晰的学习路线,网路安全更多是靠自己摸索,要学的东西又杂又多,难成体系。 网络安全分支 其实在网络安全这个概念之上,还有一个更大的概念:信息安全。 工作岗位主要有以下 网络安全工程师 信息安全工程师 风险评估工程师 应急响应工程师 o系统集成工程师 等保测试工程师 安.

HBohan的博客 5682

一、web安全入门基础知识

一、基础入门—概念名次 域名发现对应网安的意义? 一个网站的域名和他的子域名可能绑定于同一个IP地址,当我们进行漏洞扫描的时候他的主站没有找到漏洞那么我们就可以通过他子域名的网站绑定于同一个IP地址这个特点,对他的二级域名网站进行扫描,发现是否有漏洞,从而通过二级域名拿到主站的权限。 HOST文件和DNS有什么关系? 当我们进行IP地址解析的时候,我们电脑首先会通过本地host文件,去查找域名对应的IP地址。可以通过修改HOST文件当中的域名对应IP地址,例如让taobao.com对应的域名跳转到我们搭建的

weixin_45761101的博客 3万+

NVIDIA DGX Spark (Ubuntu 24.04) 部署Isaac Sim与Isaac Lab:二进制安装与ROS2集成实战

本文详细介绍了在NVIDIA DGX Spark工作站(Ubuntu 24.04系统)上,通过预编译二进制包稳定部署Isaac Sim与Isaac Lab的完整实战流程。文章重点剖析了二进制安装相较于源码编译和pip安装的优势,有效规避了CUDA、PyTorch等关键组件的版本冲突陷阱,并逐步指导完成环境配置、Isaac Lab集成、Conda环境管理以及ROS2 Jazzy的集成,最终构建出完整的机器人仿真与强化学习开发平台。

kite3的博客 396

web安全(入门篇)

web安全的概念太过于宽泛,博主自知了解的并不多,还需要继续学习。但是又想给今天的学习进行总结,所以今天特分享一篇关于web安全的文章,希望对初次遇到web安全问题的同学提供帮助。SQL注入 数据库表出现场景 当开发登录模块的时候,如果我们使用是mysql操作php,并非使用mysqli、PDO等;当查询用户是否存在的SQL是这样写的,select * from user where name =

webbc的博客 7万+

DS250DF410寄存器配置实战:从原理到调试的高速SerDes信号优化指南

在高速串行通信领域,SerDes(串行器/解串器)技术是实现芯片间高速数据传输的核心。其工作原理是通过时钟数据恢复(CDR)从串行数据流中提取时钟,并利用均衡技术补偿信道损耗。这项技术的核心价值在于突破PCB走线或电缆的带宽限制,确保在25Gbps及以上速率下数据的可靠传输。其应用场景广泛覆盖数据中心、高性能计算和通信设备中的高速背板、光模块及芯片互连。本文以TI的DS250DF410多通道重定时器为例,深入剖析其寄存器配置,特别是如何通过精细调控其自适应均衡器和眼图监测模块,实现对高速链路的信号整形与质量

aodiyi6351的博客 386

Windows Server下OnlyOffice Workspace社区版安装避坑指南(含局域网邮箱配置)

本文详细介绍了在Windows Server环境下部署OnlyOffice Workspace社区版的完整流程,特别针对企业内网环境中的邮箱配置和端口冲突等常见问题提供了实用解决方案。通过硬件资源配置建议、软件环境检查清单以及内网邮箱系统搭建方案对比,帮助用户高效搭建企业级协作平台,实现团队协作的无缝对接。

weixin_29231263的博客 449

小白学安全--web安全入门(非常详细)零基础入门到精通,收藏这一篇就够了_web安全小白

作为一个从知道创与到自建安全团队的资深白帽子,一路也是从不止所谓的web小白历经磨难成长起来的我,给现在正在准备学习web安全的同学一些建议。在我认为,渗透安全的范围其实要学习的东西很广泛的,间接的相当于你要是一个前端工程师,也要是一个后端工程师(其中就包含主流的php,JAVA,python等),如果学习移动端安全,你还要是一个出色的安卓工程师,而网络安全又细分为很多方向,比如系统安全、移动安全、无线安全、web安全等。

2401_86065041的博客 1525

编程入门应该先学什么?(非常详细)零基础入门到精通,收藏这一篇就够了

编程是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并终得到相应结果的过程。近些年来,对着信息化时代的发展,编程的相关岗位越来越受人欢迎,很多人都想学习编程从事相关工作,那么编程入门先学什么呢?编程入门一般先学C语言或者是Python。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

logic1001的博客 1万+

AIR780E二次开发点灯(LuatOS)

Air780E的LuatOS点灯教程,二次开发教程,可用于所有ec618平台,无需SDK

rootuseres的博客 1万+

手把手教你用TBtools+MCScanX完成玉米基因家族共线性分析(附完整代码)

本文提供了一套完整的玉米基因家族共线性分析实战流程,详细讲解了如何从数据准备、格式处理开始,利用DIAMOND进行快速比对,再结合MCScanX进行核心共线性区块鉴定,最后通过TBtools实现从全基因组圈图到特定基因家族微共线性图的可视化。教程包含可直接运行的代码与常见问题解决方案,帮助研究者高效完成从命令行计算到图形化展示的全过程。

tech5的博客 591

网络安全工程师需要学什么?零基础怎么从入门到精通,看这一篇就够了

网络安全工程师需要学什么?零基础怎么从入门到精通,看这一篇就够了

weixin_51725318的博客 5952

10、硬件工程师笔试面试——继电器(2025版本)

在设计电路时,应综合考虑SSR的优势和局限性,确保选择合适的型号,并采取适当的设计措施来优化性能和可靠性。继电器的主要功能是利用较小的电流或电压来控制较大电流或电压的电路,实现信号的放大和隔离。在处理继电器故障时,应综合考虑电源、线圈、触点和负载等因素,及时进行故障诊断和处理,以确保电路系统的稳定性和安全性。由于汽车电子系统的复杂性,继电器的设计和选择必须考虑到系统的特定要求,包括电流容量、电压等级、环境条件(如温度、湿度、振动)以及所需的保护和隔离功能。确定线圈的工作电压或电流,以及吸合电压或电流。

XU157303764的博客 3733

入门Web安全(非常详细)零基础入门到精通,收藏这一篇就够了

经过这个三个目标的洗礼,你一定可以入门 web 安全,而且会是一个技术能力很强的人,能完整实现三个目标的人,我认为是比较少的,在如今大环境如此不好的前提下,积累自身能力是最重要的事情,让你即使在如此不好的环境下也能找到非常好的工作,如果你想跟更多小伙伴一起学习,欢迎扫描下方二维码加入我们,一起学习提升。下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!

Button12138的博客 777

Sigrity System Explorer ViaWizard模式进行过孔建模和仿真分析操作指导

点击TVac_lower tdvac_lower,自动跳转到2D时域曲线,查看最小低电平穿过VIL(ac)max电压的延时,结果如下。点击TVac_high tdvac_high,自动跳转到2D时域曲线,查看最小高电平穿过VIH(ac)min电压的延时,结果如下。点击max Vix_Rise,自动跳转到2D时域曲线,查看上升边PN交叉点与参考电压VREF(dc)的偏差,结果如下。Threshold:阈值,软件自带3个模板,default,Tr01,Tr02,本例选择Default。

weixin_54787054的博客 571

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

上一篇: 【2024版】最新渗透攻击实例-漏洞扫描和注入攻击的工具
下一篇: 网络安全-SQL注入实战
网络安全大白
博客等级 码龄5年 7306粉丝 698原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值