企业无线局域网安全

企业无线局域网部署最佳实践 随着技术的不断进步和数字化转型的推进,无线网络已经成为现代企业和组织的生命线。从连接办公室的每一个角落,到支持复杂的业务应用和服务,无线网络的重要性不言而喻。但是,随之而来的是一系列的挑战:如何设计、部署和维护一个高效、稳定且安全的无线网络?这本书旨在为无线网络工程师提供一个全面的指南,涵盖了从规划和设计到优化和维护的所有关键步骤。通过深入探讨每一个主题,我们希望为您提供必要的知识和工具,帮助您构建和管理一个卓越的无线网络。 阅读详情


Author:云舒(wustyunshu@hotmail.com)


一、 前言以及版权

网络本来是安全的,自从出现了研究网络安全的人之后,网络就越来越不安全了。希望更多的文章是用来防御,分析,而不是纯粹的攻击。本文可以任意转载,但必须保证完整性,且不得私自用于商业用途。


这个文章本来是06年夏天就应该贴出来的,可是后来写了70%的时候忙别的事情搞忘记了,没有继续写下去。这个周末突然记起无线局域网安全的事情,吓一大跳。翻遍了硬盘也没找到原稿,迫不得已之下,下午花一下午时间重新写出来,重写的肯定不可能和去年写的一样了,这是让
我非常郁闷的事情。


二、 无线局域网安全的演变

无线网络在安全性方面,先天就比有线网络脆弱——虽然有线网络也存在很多安全问题。这是因为无线信号以空气为介质,直接向四面八方广播,任何人都可以很方便的捕获到所传输的信息,或者说被信息捕获到。而有线网络具有比较密闭的载体——网线,虽然网线也不是很硬,但是起码我没见过有人通过剪断网线来截取资料。

经过多年的努力,无线网络的安全性逐渐发展,具备了不亚于有线网络的安全性,下面将逐步介绍。需要注意的是,这里说的安全性,是指网络协议本身的安全性,而不涉及到具体的操作系统和具体的应用。因为对于具体的系统和应用来说,协议层的安全是基础,系统以及应用安全处于更上层。对于任何载体来说都是一样的,与载体无关。


1. 无安全措施

初的无线网络,还没有采取任何的保密措施,一个无线网络就相当于一个公共的广场,任何人都可以直接进入。这是由它的使用领域决定的,当时无线网络主要用来进行条形码扫描等等,只需要考虑灵活方便,不去关注安全问题。

随着使用范围越来越广,一些比较敏感的信息需要通过无线网络传输,IEEE开始制定了初步的安全协议,防止信息被恶意攻击者轻易截获。


2. WEP保护

WEP是无线网络最开始使用的安全协议,即有线等效协议,全称为Wire Equal Protocol,是所有经过Wi-Fi认证的无线局域网所支持的一项标准功能。

WEP 提供基本的安全性保证,防止有意的窃听,它使用一套基于40位共享加密密钥的RC4对称加密算法对网络中所有通过无线传送的数据进行加密,密钥直接部署在AP和客户端,不需要公开传输,从而对网络提供基本的传输加密。现在也支持128位的静态密钥,对传输加密的强度进行了增强。

WEP也提供基本的认证功能,当加密机制功能启用后,客户端尝试连接上AP时,AP会发出一个Challenge Packet给客户端,客户端再利用预先保存的共享密钥将此值加密后送回AP以进行认证比对,如果与AP自己进行加密后的数据一致,则该终端获准联入网络,存取网络资源。

WEP协议存在非常多的缺陷,主要表现在密钥管理,传输安全等方面。首先,终端密钥必须和AP密钥相同,并且需要在多台终端上部署,用来进行基本的认证和加密。密钥没有统一管理部署的能力,更换密钥时需要手动更新AP和所有的终端,成本极大。倘若一个用户丢失密钥,就会殃及到整个网络的安全性。

其次,在数据传输方面,RC4加密算法存在很多缺陷,攻击者收集到足够多的密文数据包后,就可以对它们进行分析,只须很少的尝试就可以计算出密钥,接入到网络之中。常见的网络嗅探工具,比如WireShark就具有捕获无线网络数据的能力,破解WEP算法的工具也非常常见,比较著名的就是 Aircrack,包含在Auditor Security Collection LIVE CD工具盘中。此工具盘中包含有Kismet、Airodump、Void11、Aireplay 和Aircrack等多个工具,是一套完整的攻击工具。

最后,WEP中的数据完整性检验算法也不够强壮,WEP ICV是一种基于CRC-32的用于检测传输噪音和普通错误的算法。CRC-32是信息的线性函数,攻击者篡改加密信息后,可以很容易地修改ICV,通过解密端的检验。

只是一种基本的认证和传输加密协议,不适合在企业级环境中使用,现在一般使用在不注重安全性,且终端数目少的家庭网络中。


3. WPA保护

WPA(Wi-Fi Protected Access)技术是IEEE在2003年正式提出并推行的一项无线局域网安全技术,其目的是代替WEP协议,成为一个可提供企业级安全的无线网络认证传输协议。WPA是IEEE802.11i的子集,是在802.11i实施之前的一个临时过渡协议,其核心就是IEEE 802.1x和TKIP。其中802.1x是基于端口的认证协议,TKIP则提供高安全级别的传输加密和完整性检测功能,组成一个完整的解决方案。


1) 802.1x认证控制技术

802.1x协议是由IEEE定义的,用于以太网和无线局域网中的端口访问与控制。该协议定义了认证和授权,引入了PPP协议定义的扩展认证协议EAP。 EAP(扩展认证协议)本身不提供认证功能,而是提供一个可扩展的基本认证框架,各公司可以在此框架的基础之上发展出各种各样的认证协议。比如EAP- TLS,PEAP,TTLS,LEAP,EAP-MD5等各种认证协议,这些协议主要由微软,思科,3com等公司提出并实现。

在使用802.1x端口控制技术的无线网络中,当无线工作站与无线访问点AP关联后,是否可以使用AP的服务要取决于802.1x的认证结果。认证通过上述的各种扩展认证协议进行,如果认证通过,则AP为无线工作站打开这个逻辑端口,否则不允许用户上网。

802.1x提供一种灵活可信的认证控制技术,可以使用各种扩展认证协议,包括证书和动态口令在内,因此是一种可以信赖的认证方法。


2) TKIP加密协议

WPA采用TKIP(Temporal Key Integrity Protocol)为加密引入了新的机制,在用户连接到AP,认证服务器接受了用户身份之后,使用802.1x产生一个唯一的主密钥处理会话。然后, TKIP把这个密钥通过安全通道分发到AP和此用户的客户端,并建立起一个密钥构架和管理系统,使用主密钥为用户会话动态产生一个唯一的数据加密密钥,来加密每一个无线通讯数据报文。TKIP的密钥构架使WEP静态单一的密钥变成了500万亿个可用密钥。由于使用了动态密钥来进行传输加密,且密钥长度有了增强,因此TKIP加密传输几乎不可能被破解。

在消息完整性检测方面,TKIP除了和WEP一样继续保留对每个数据分段进行CRC校验外,还为每个数据分组都增加了一个8个字节的消息完整性校验值。这和WEP对每个数据分段进行ICV校验的目的不同:ICV的目的是为了保证数据在传输途中不会因为噪声等物理因素导致报文出错,因此采用相对简单高效的 CRC算法,但是攻击者可以通过修改ICV值来使之和被篡改过的报文相吻合,可以说没有任何安全的功能。而TKIP则是为了防止黑客的篡改而定制的,它采用Michael算法,具有很高的安全特性。当MIC发生错误的时候, WPA会采取一系列的对策,比如立刻更换密钥、暂停活动等,来阻止攻击。

WAP协议在认证和传输,以及完整性检测方面,达到了很高的安全级别,满足了普通企业的需求。同时,802.1x认证技术,认证数据可以方便的统一管理,降低了部署难度。因此WPA适合于一般的企业级应用。


4. IEEE 802.11i保护以及WAPI

802.11i是IEEE最新的无线网络安全协议,包含802.1x认证技术,TKIP和AES(Advanced Encryption Standard)加密技术。而WAPI则由中国提出,采用公开密钥密码体制,利用证书来对无线局域网中的终端和AP进行认证。对这两种最新的协议我并没有完全理解,就不多说了,可以参考《解析新一代WLAN安全技术IEEE 802.11i、WPA和WAPI》一文。


5. 其他安全技术

这里的其他安全技术主要是指SSID,MAC地址过滤等技术,这些技术由于不适合企业级应用,并且安全性不高,理解容易,这里就不多提了。


三、 加强的安全与实例

从目前的各种技术的成熟角度,以及安全性来考虑,WPA是最好的选择,使用802.1x进行身份认证,使用TKIP来加密传输,检测完整性。但是对于更高的安全需求,就需要使用一些综合的技术方法,来达到独特的目的。

目前来说,对于认证,最安全的方法是使用一次性口令,通过不变的key加上每分钟改变一次的随机的硬件token作为密码,可以达到防御任何监听,破解,记录密码的攻击方法。802.1x使用了EAP扩展认证协议,因此也支持动态口令认证技术,许多公司都有自己的实现。

对于数据的传输,TKIP虽然大幅提高了安全性,但是仍然只是对数据的加密,达不到一个安全的可信通道的要求。目前来说,VPN是这方面的最好选择。

因此,我认为在需要高安全级别的无线网络的环境中,使用动态口令认证,加上VPN安全通道传输是一个比较好的解决方案。在网络中不是一台RADIUS服务器,用来提供802.1x身份认证功能。在AP的后端,所有无线连接终结到一台VPN设备。

当用户连接到AP时,不需要任何的身份认证,但是由于隔离技术,用户是无法访问或者攻击到此AP上的其他用户的。要访问网络资源,必须手动连接VPN服务器,此时进行动态口令的认证。认证成功,则打开逻辑端口,允许访问。


四、 总结

本文就到此结束了,主要是介绍了一下我对企业级无线网络安全的理解。这里的安全是网络协议的安全,只是防范未授权用户对无线网络的攻击。对于来自无线网络内部的攻击,则属于系统安全和应用安全的范围,不是无线网络的安全协议解决的范畴之内。


最后还是希望网络越来越安全吧,这样我上班也可以轻松一点。

 
大型企业局域网安全解决方案 第一章 总则 本方案为某大型局域网网络安全解决方案,包括原有网络系统分析、安全需求分析、安全目标的确立、安全体系结构的设计、等。本安全解决方案的目标是在不影响某大型企业局域网当前业务的前提下,实现对他们局域网全面的安全管理。 1.将安全策略、硬件及软件等方法结合起来,构成一个统一的防御系统,有效阻止非法用户进入网络,减少网络的安全风险。 2.定期进行漏洞扫描,审计跟踪,及时发现问题,解 阅读详情

相关推荐

222、企业无线局域网安全防护建议

思科公司的具体做法是:RADIUS 服务器与客户机进行双向的身份验证,验证完成后,RADIUS 服务器与客户机确定一个 WEP 密钥(这意味着,这个密钥不是与客户机本身物理相关的静态密钥,而是由身份验证动态产生的密钥)。SSID提供低级别的访问控制,WEP是可选的加密方案,它使用RC4加密算法,一方面用于防止没有正确的WEP密钥的非法用户接入网络,另一方面只允许具有正确的WEP 密钥的用户对数据进行加密和解密 包括软件手段和硬件手段。第一种是链路层的安全,也就是标准的 WEP 加密。

qq_43416206的博客 209

无线网络的快速部署

快速部署无线业务满足常见小微场景需求,部署简单,可快速上线。

杨过的博客 1589

40、无线局域网企业与家庭级安全机制解析

本文深入解析了无线局域网(WLAN)在不同场景下的安全机制,比较了WEP、WPA和WPA2等协议的安全性及适用场景。针对家庭用户、中小型企业及大型企业分别定义了三个安全级别,并提供了对应的安全策略和操作建议,旨在帮助用户构建适合自身需求的安全无线网络环境。

purple的博客 175

分享从零开始学习网络设备配置--任务5.1 组建直连式二层无线局域网

本文为网络设备配置与管理项目教程(华为eNSP模拟器版)教材配套资源,由电子工业出版社出版,张文库老师主编,讲解的非常详细,分享给大家,希望大家有所收获,支持正版!

征途是星辰大海 2465

25、企业无线局域网规划与设计全解析

本文全面解析了企业无线局域网(WLAN)的规划与设计,涵盖网络覆盖与容量设计、AP部署、电源与布线、安全策略、管理维护及未来发展趋势。通过科学的计算方法和实际场景分析,帮助企业在不同环境中实现高效、稳定、安全的无线网络部署,并为未来技术演进提供前瞻性建议。

chair的专栏 123

企业局域网无线认证解决方案

企业局域网无线认证解决方案

企业级无线局域网(WLAN)架构:高效部署策略与技术指南

无线网络直接影响整体网络性能,在当今企业网环境中,已有超过一半的数据流量通过无线信道传输,随着物联网技术的普及,无线网将承载更多的关键业务流量。企业/园区场景的无线网络值得考虑的关键因素有很多,例如终端移动性,AP 漫游能力和覆盖范围、带宽和吞吐量、延迟、信道、射频干扰等。当然,还有网络安全配置和用户认证等等。

asterfusion的博客 4491

安全无线局域网的设计与部署

安全无线局域网的设计与部署

企业中无线局域网WLAN的安全防护

近来,无线局域网发展的势头越来越猛,它接入速率高,组网灵活,在传输移动数据方面尤其具有得天独厚的优势。但是,随着无线局域网应用领域的不断拓展,其安全问题也越来越受到重视。在有线网络中,您可以清楚辨别哪台电脑连接在网线上。无线网络与此不同,理论上无线电波范围内的任何一台电脑都可以监听并登录无线网络。如果企业内部网络的安全措施不够严密,则完全有可能被窃听、浏览甚至操作电子邮件。为了使授权电脑可以访问网

353

Ubuntu新手必看:3种方法快速查看和编辑JSON文件(附jq安装指南)

本文为Ubuntu新手详细介绍了三种查看和编辑JSON文件的核心方法:命令行利器jq、灵活脚本Python以及直观的图形化编辑器(如VS Code)。文章重点解析了jq的安装与核心用法,并对比了各方案的优缺点,帮助用户根据快速查询、复杂处理或直观编辑等不同场景,选择最合适的工具,从而高效处理JSON数据。

weixin_29229989的博客 418

OneNet新版MQTT+OneJSON接入全指南

物联网云平台设备接入是嵌入式系统与云端协同的基础能力,其核心依赖于标准化通信协议与统一数据模型。MQTT作为轻量级发布/订阅协议,凭借低带宽占用和高可靠性,成为边缘设备上云的主流选择;而物模型(Thing Model)则定义了设备能力的数字契约,支撑数据语义化与平台自治管理。OneNet新版强制采用MQTT+OneJSON协议栈,不仅提升数据解析一致性与安全认证强度,更推动开发范式从‘协议适配’转向‘模型驱动’。该架构广泛适用于环境监测、智能表计、工业传感等场景,尤其利好基于ESP8266、STM32等资源

weixin_42599558的博客 363

构建企业NETGEAR安全无线局域网

无线局域网由于采用无线信号通讯,在网络接入方面非常灵活,只要有无线信号就可以通过无线网卡完成网络接入的目的;同时IT也不用再担心交换机或路由器端口数量不足而无法完成扩容工作了,可实现“任何人在任何时间,任何地点以任何方式与任何人通信”,从而弥补了传统有线局域网的不足。无线局域网常用于会议室,提供给外来人员访问互联网网络,个别特殊的设备网络连接上,出于企业安全考虑,目前很少有企...

weixin_33736048的博客 111

Visual Studio Community与Visual Studio Community与VS Code有啥区别

Visual Studio Code提供了基本的代码编辑、调试和版本控制功能,以及丰富的插件和扩展库。Visual Studio Community和Visual Studio Code在功能上有很大的差异,Visual Studio Community提供了比Visual Studio Code更多的功能,包括代码重构、智能提示、图形化设计等。他的优势在于它的轻量级和灵活性。此外,Visual Studio Code还具有丰富的扩展和插件生态系统,用户可以通过安装插件来扩展其功能,从而满足自己的需求。

m0_56551554的博客 2845

企业无线局域网(WLAN)安全防护与最佳实践

无线局域网(WLAN)作为现代企业网络的重要组成部分,其安全性直接关系到企业数据资产保护。基于IEEE 802.11标准,WLAN通过射频技术实现数据传输,但无线信号的广播特性也带来了安全风险。从技术原理看,WLAN安全涉及认证机制、加密协议和网络架构三个关键维度。其中,802.1X认证框架和WPA3加密标准代表了当前最先进的安全方案,能有效防御中间人攻击和数据窃听等威胁。在企业应用场景中,需要特别注意SSID管理、AP部署位置和持续监控等实践要点。通过采用SAFE设计原则和云管理架构,企业可以构建兼顾安全

weixin_30906185的博客 605

Apple 网页 SRP 登录系列文章(二):网页参数提取与会话初始化

本文深入解析了Apple网页SRP登录的第一个关键环节。文章首先指出Apple登录页面采用多层安全架构,包括跨域跳转机制和动态参数生成。重点介绍了四种关键参数(ServiceKey、SCNT、FrameId、ServiceNum)的提取技术,通过正则表达式和JSON路径解析从HTML脚本和HTTP头中获取。最后详细说明了会话初始化流程,包括访问初始页面和构建认证URL。这些技术细节揭示了Apple如何通过复杂机制确保登录过程的安全性。

Sayid_Des的专栏 1131

maxwell与steady state thermal 通过workbench耦合仿真

文章目录maxwellsteady state thermal maxwell 1加入maxwell并打开 2导入模型 3选择求解器类型:涡流求解器eddy current 4修改模型名字不能带_等特殊符号 5为模型赋材料 6设立3D边界,各边电流进出方向为0其余方向300 7设置激励条件,可设置电流大小,相位,方向 8设置集肤深度,选取中间铜导体的体然后设置,如何设置看帮助文档 9求解设置 迭代步数 收敛精度 交流电频率 10验证条件满足计算 11求解 发现无法求解,删除ai

roymustang的博客 9202

公司无线局域网安全解决方案

企业要采用无线局域网​的话,则在网络安全上,要比有线网络,更加关注。企业为了实现网络的安全,不得不采用更多的网络安全设备,以达到无线局域网正常运行的目的。对于企业组建无线局域网的一些建议: 企业在组建无线网络时,最好不要全部放弃有线网络。而是仍然以有线网络为主,无线局域网为辅助,充分利用有线网络与无线网络的优点,达到扬长避短的目的。如对于一般用户办公的台式电脑,因为其一般不需要移动,在一段相当长...

时讯无线博客 771

手把手教你:基于STM32H7自制飞控,如何从零开始移植PX4固件(附避坑指南)

本文详细介绍了如何基于STM32H7自制飞控板并移植PX4固件的完整流程,包括硬件设计、开发环境搭建、关键配置文件移植、驱动开发与适配等关键步骤。特别针对PX4-AutoPilot的移植过程提供了实用技巧和避坑指南,帮助开发者高效完成飞控系统开发。

weixin_30271335的博客 144

企业无线局域网安全防护五大建议(转)

企业无线局域网安全防护五大建议(转)[@more@]   无线局域网发展的势头越来越猛,它接入速率高,组网灵活,在传输移动数据方面尤其具有得天独厚的优势。但是,随着无线局域网应用领域的不断拓展,其安全问题也越来越受到重视。在有...

ciya3282的博客 249

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

专业解决各种上架过包问题,专业团队专业处理 751

UE5实现建筑剖切效果

UE5实现建筑剖切效果

专注GIS开发 8464

无线局域网规划指南(一)

这是两部关于规划无线局域网建议系列的第一部分。在“《无线局域网规划指南(二)》”中,专家分享他们的最佳方法以规划和保护您的无线局域网。  您的中小企业(SMB)准备好首次无线局域网连接和随处都可以用笔记本接入网络吗?如果没有,它很快就会开始。  两年前,在美国只有不足25%的中小企业拥有无线局域网。今天,根据副总统Ray Boggs在Framingham,Mass的IDC所做的中小企业调查

网络 人生 学习 进步 1621

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

再获实力认证!Fortinet荣膺 Gartner® 企业级有线和无线局域网基础设施魔力象限“领导者”

专注于推动网络与安全融合的全球网络安全领导者 Fortinet®(NASDAQ:FTNT)近日宣布,在《2024 年 Gartner 企业级有线和无线局域网基础设施魔力象限》报告中荣膺领导者称号。这已经是 Fortinet 连续第四年进入该魔力象限,并荣登领导者象限。

Sophya89的博客 424

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

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

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

上一篇: 逆向分析点滴
下一篇: Phrack 64#
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值