网工请自查!这十个技术问题还不会就out了

通过创建索引解决船舶报位查询超时问题:SQLServerException: Read timed out 考虑长期架构重构为分区表(Partitioned Table)以彻底解决多表 UNION ALL 的性能瓶颈。更新这 12 张分表以及 fdwend_ft 表的统计信息(UPDATE STATISTICS 表名)。fdwend_ft是动态表,fchuan是静态表视图(基于12张分表而建立) 阅读详情

今天我想和大家聊聊几个与我们日常工作紧密相关的技术问题,它们都多多少少地影响了咱们的工作效率和网络的稳定性。

比如数据链路层,它作为OSI模型的第二层,是我们网络架构中不可或缺的一环。它定义了如何封装数据帧,如何进行错误检测和纠正,以及如何管理MAC地址。倘若出了岔子,那你的交换机可就别想着正确传输信息了。

再比如MPLS VPN网络中的VPN实例和VRF的关系。VPN实例和VRF的配置和管理,则直接关系到企业数据的安全传输和网络的隔离性。

这两个问题只是冰山一角,对于设计和维护网络,确保数据的高效和安全传输,还有不少问题需要了解,接着往下看你就明白了。

01

数据链路层有什么用?

数据链路层,作为OSI第二层,里面包含的设备就是交换机,包含的协议通常是一些局域网和广域网协议,那些协议的定位是什么呢?

就是当设备之间连线线连好之后,所组成的网络是一个什么样的架构,设备之间通信需要些什么样的规则,每一个节点的地址使用什么样的格式,在通讯的时候发送的数据在二层应该封装一个什么样的报头,里面包含什么样的内容,这些,都是数据链路层决定的。

数据链路层,对于所谓的局域网和广域网的协议,他们所定义的东西是完全一致的。

第一就是通过这种标准组成的网络,是一个什么类型的网络。是一个MA网络也就是多路访问网络,还是一个点到点网络,这个叫P2P网络。

以及在这个网络中节点之间通信有什么样的规则,什么时候能够发送数据,什么时候不能发送,发送的数据,携带一个什么样的报头,里面包含什么内容,并且在这个网络中每一个节点也就是每一个接口,有一些什么样的二层地址,这些都是由二层的这些局域网和广域网协议所规定的。

02

如何理解MPLS VPN网络中的

VPN实例和VRF的关系?

MPLS VPN是利用MPLS所实现那种VPN技术。

这是个peer to peer VPN,它的最大特点就是运营商的PE设备,会通过一张私网路由表来帮助客户维护他的私网路由。

然后再把这些帮客户维护的私网路由,以 VPNV4形式发送给另外一台PE。再由这个PE以IPV4形式把路由发送给对方的协议,通过这种方式来让控制方面来实现联通。那这个时候VPN和VRF的关系是什么呢,就是在PE路由器上。

通过CE收到的路由,正常情况下是会通过公网路由表来接收的,那这个肯定不行。

而不行的原因,就是因为所有的客户使用的是私有地址,这个私有地址可能会冲突,A客户和B客户如果使用了相同的地址段的话,这两个相同地址段,如果要接收了,可能会通过控制层面来比较一个好坏,最终收一个,没有办法做到全部都收。

基于国际公约,在公网路由器的公网路由表中,只允许包含公网路由,不允许包含私网路由的。

所以这个时候需要一个独立的路由表来针对每一个客户去缓存他的私网路由,也就是说一个客户对应一个私网路由表。

这个时候可以通过创建一个VRF来实现这一点,在路由器上创建一个VRF,就会针对这个VRF形成一个私网路由表,然后把这个VRF跟连接CE的接口,做一个绑定。

当绑定完毕之后,通过这个接口学到的任何CE给你通告的路由都会直接加入到VRF路由表。要是在数据层面,通过这种VRF的接口收到一个数据。也会查找VRF路由表来做一个最终转发。

03

**pppoe协议,adsl,宽带,**以太网

这几者之间的关系是什么?

PPPoE是在以太网技术之上虚拟PPP连接的技术,这个技术是ADSL常用的一个接入技术,通过这个技术。

即便使用比较常见的以太网连接,来把用户连到运营商网络。

也可以通过PPP自带的认证机制来实现3A的计费功能,实现业务的流畅性。

ADSL就是一种宽带接入技术,ADSL,还有HDSL ADSL 2代,这都是相应的标准,ADSL叫异步数据用户线。

通过这种方式接入的一个网络,上下行的带宽是不对等的,通常对于客户而言,下行带宽会高于上行带宽。

而宽带则是一种业务,主要指的就是这个运营商的连接的一个速率,只要达到多少多少带宽以上,这个连接成为一个宽带业务,对应宽带的就是窄带,窄带是早期的项目,56K Modem,64K Modem。

做一个连接,只有几十K的传输速率,这种就是窄带连接。

简单来说,窄带和宽带指的是业务的区分,ADSL是这个业务所使用的技术,PPPoE就是一个拨号方式,通过就是以太网连接,结合PPP的技术,在以太网之上形成一个虚拟的PPP连接。通过这个链接来实现计费的功能。

04

VLAN划分与子网划分

联系与区别?

划分VLAN一般是基于部门的,一个VLAN就是一个基于2层实现的LAN,每个VLAN都要使用一个独立IP地址段。

简单来说有多少VLAN可以理解为有多少网络,在做VLSM子网化的时候要根据VLAN数量决定借位多少,然后根据每个VLAN的大小,里面成员数量决定借位时给主机位预留多少位。

一般是先决定有多少个VLAN,如何划分VLAN,再根据VLAN的数量和VLAN内成员数量决定VLSM的借位多少。

05

划分VLAN的作用是什么?

因为交换机默认没有划分网络的能力,默认交换机连接的所成员属于同一个网络,IPv4下主机通信时偶尔会产生广播。

例如ARP,这类广播对网络内所有主机都会产生影响,浪费大家的链路带宽以及CPU内存资源.

因此一个网络里主机数量越多,每个主机收到莫名其妙的广播数量就越多,进而整体网络品质会越发下降。

为了增加网络高可用性,我们建议在设计网络的时候尽可能避免在一个网络中包含过多主机。

因此需要将主机分布在不同网络之间,这样第一不影响大家彼此通信,第二也不会让主机收到过多不必要的广播,保证了网络的品质。

早期隔离网络更多用的是路由器,在内网使用大量路由器分割网络的问题是成本很高,并且浪费路由器的功能性以及增加了端到端传输延迟(路由器转发数据效率很低)。

通过使用VLAN交换机自身就可以分割网络,通过二层隔离的方式实现广播域划分,有了这个技术后内网可以大量部署交换机,成本低,转发延迟低,不会浪费设备功能性;

并且通过少量MLS一样可以实现网络间通信,并且结合一些交换安全技术后还能保证VLAN内VLAN间通信的安全性,因此VLAN的作用是廉价的解决网络分隔问题。

06

如何形象说明路由协议RIP和OSPF?

RIP是一个距离矢量协议,也叫基于传闻的协议,路由器之间运行RIP,虽然彼此会传递更新报文,路由器也能学习到非直连网络的路由信息。

但是网络是如何连接而成的,有几台路由器,各有几个接口,接口类型是什么样的,从自身出发去往一个非直连网络有哪些路径,这些信息路由器一概不知,只是听从邻居的话,使用邻居做为去往一个又一个非直连网络的下一跳。

例如R1—R2—X 该例子中R1连接R2,R2身后连接X网络,当在R1和R2之间运行RIP之后,R2给R1发送的更新报文中会包含X网络路由,这相当于R2在告诉R1,想去往X网络请使用我R2做下一跳,R1会照办,将路由加入本地路由表,下一跳地址设置为R2。

但R1其实并不知道X在哪里,自己去往X有哪些可行路径,路径包含哪些路由都不知道,因为不能证明R2传递的路径信息的真伪,因此只能选择相信。

但如果X网络不在R2身后,R2认可的X网络路径信息如果是错的,R1收到更新也无法辨别,只能选择信任。

在这种情况下,路由器之间彼此传递错误的路径信息就会导致路由选择环路,导致去往X网络的数据在环中不停传递,浪费大量资源。

OSPF是一个链路状态协议,也叫基于拓扑的协议。

路由器之间运行OSPF之后彼此交互的更新报文中包含的不是路由条目而是LSA,虽然LSA有很多类型,不同场合路由器会使用特定LSA传输特定信息,但是大体上LSA包含的内容既包含拓扑信息又包含路由信息,比如说路由器产生的1类LSA里包含该路由器自身的信息。

比如他的路由器ID,他是什么类型的路由器,以及该路由器宣告进OSPF的接口信息,有几个接口,连接的是什么类型的链路,有没有通过接口建立其他OSPF邻居,如果有邻居的RID是多少,每个接口IP地址,子网掩码,度量值是多少,都会在1类LSA中包含。

路由器收到邻居的LSA后会在一个区域内泛洪扩散,使得区域内所有路由器都能收到这条LSA。

当OSPF运行一段时间后,每台路由器都能收到区域内所有路由器所产生的LSA,基于这些LSA路由器能知道整个区域是怎么连接而成的,有多少台路由器,每台路由器有多少接口,都是什么类型的,每个网络分布在什么位置都一清二楚。

届时每台路由器都使用一个树形结构算法,将自身设置为树根,利用SPF算法判断去往每个一个非直连网络的最优路径,最终将最优路径的路由加入路由表转发数据。

可以理解为运行OSPF的路由器是先知道网络的拓扑再基于拓扑计算路由,而不是听从邻居的建议使用相应邻居做下一跳转发数据去往相应目的网络。

07

如何生动形象、切中要点地讲解

OSI七层模型和两主机传输过程?

OSI是一个协议栈,在角逐中失利最终被TCP/IP协议栈取代,中国地区网络教学者觉得OSI分层比较细致,故用其做参照于网络研究。

简单来说两台主机通过Internet通信,具体来看,这是两个主机上的两个App之间的通信,APP想要利用网络连接收发数据就需要OSI应用层的协议配合,一般这些协议都内置在APP的网络模块内。

开发人员在开发应用的时候都会将OSI应用层必要协议写入网络模块里,通过这些协议APP虽然可以利用网络连接接口收发数据,但是可能由于通信双方主机的操作系统不同,跨平台的应用由于数据编码压缩加密机制都不尽相同。

源主机使用的编码目的主机未必能理解,从而通信数据到达目的主机后可能会以乱码形式出现,故通信失败。

为了避免这样的事频繁出现,APP通信前需要通过OSI表示层协议沟通彼此兼容的数据表示格式,通过统一的编码加密压缩机制处理待传输的数据从而避免接收方收到数据后无法顺利识别。

通常这类表示层协议和应用层协议一样被写入APP的网络模块内,这些通常也是由研发工程师负责。

需要注意的是,APP之间想通过表示层协议协商数据的标识格式的前提是APP之间通过Internet建立逻辑连接,这往往也称之为会话,负责建立会话的工作通常由OSI协议栈的会话层协议负责,当然这类协议通常也存在于APP以及操作系统平台的网络模块中。

通常这三层的协议都内部集成在APP以及操作系统之内,因此我们将OSI上三层称之为操作系统层。

APP之间要建立会话的前提是网络中的网络设备能识别并知晓源目主机所在的位置也就是地址,能顺利传递彼此的通信数据,并且主机上的APP本身也需要相应的标识,这些内容在上三层中并不包含,一般这些内容更多集中于下四层中。

OSI传输层的协议顾名思义负责数据的传输,主要做两件事,第一将应用产生的数据流切片,满足每个分片大小足够小以便于被网卡传输,第二在每个分片前添加4层报头,将数据分片形成数据段,其段头中主要包含源目端口来标识通信的源目APP。

数据段缺乏地址信息无法被直接发送,因此OSI网络层对数据段进行3层报头添加,在报头中包含用来标识源目主机位置的源目地址信息,将每个数据段封装成数据包,虽说数据包包含了标识源目应用和源目主机的端口地址信息,但接入网络设备通常为2层交换机无法识别3层报头的地址信息。

因此OSI数据链路层协议针对数据包做了2层报头报尾的添加,将数据包形成数据帧,2层报头中包含源目2层地址信息方便接入网络设备识别以便精确转发数据,最终数据帧交由OSI物理层处理,物理层将数据帧转换成bit将bit转换成电子脉冲或光子脉冲通过相应介质发送走。

这便是端到端通信中OSI各层的功能,简单来说发送发发送数据的流程是从7层到1层,接收方收到数据的流程是从1层到7层。

08

怎样通过静态路由

实现跨网段互通?

路由器作为网关设备主要负责网络间的数据转发,不过转发前提是路由器知道目的网络在哪里,知晓去往目的网络的路径信息,所谓的路由就是一台路由器去往一个目的网络的路径信息。

默认情况下路由器接口配置好IP地址,保证接口状态为UP下,路由器能自动获得直连网络的路径信息,但是非直连网络路由默认是没有的,静态路由使得路由器获得那些非直连网络的路径信息。

言归正传,如何通过静态路由让网络间访问能通,简单要看有多少网络,哪些网络没有直连哪些路由器,在相应路由器上配置静态路由去往相应非直连网络就可以解决连通性问题。

09

如何配置

默认路由,静态路由?

对于企业园区网而已,一般一个园区都有一个边界设备通过连接企业宽带到达ISP,这个设备通常是一台路由器或一台防火墙,由于通过企业宽带,企业网内主机可以访问整个Internet内的全部资源。

Internet太大了,包含了太多的网络,如果让企业边界路由器/防火墙一条条写静态去往这些网络效率太低,劳动密集型严重,并且在没有冗余链路的连接下也不存在选路问题,因为一般会通过配置静态默认指向ISP实现内网去往任意外网的访问。

静态默认的命令如下:

Cisco: ip route 0.0.0. 0.0.0.0 出接口 下一跳地址

Huawei: ip route-static 0.0.0.0 0 出接口 下一跳地址

10

如何理解

STP生成树协议?

一个网络里可以包含多台交换机,但是交换机是有认知缺陷的。

通过自动学习MAC地址表项的机制使得交换机总是认为网络内的所有节点都和其直连,通过一个接口收到一个数据帧,则认为发送源主机就直接连接在该接收接口之上。

正是因为交换机无法了解完整网络连接情况,因此在多交换机存在的情况下,会出现交换环路,在环路内转发组播广播数据会进一步导致广播风暴。

当然也不是所有多交换机存在的网络中都一定会出现环路,归根结底来说导致环路和广播风暴的根因是交换机间的冗余连接。

虽然为了避免单点故障,交换机间的冗余连接是必不可少的,但是冗余如果换来的是整体网络的中断就有点得不偿失了,因为STP协议的定位就是在一个带有冗余的交换网络中通过阻塞冗余路径,让端到低端通信路径形成树形,保证端到端有且只有一条可行路径,从而防止环路产生。

并且由于STP会实时监控网络内各个链路状态,从而能在某根交换机间路径崩溃的情况下迅速启用之前逻辑阻塞的链路,在保证高可用性的基础上,防止环路发生。

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

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

1.学习路线图

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

2.视频教程

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

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

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

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

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

3.技术文档和电子书

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CSP历年真题201503-1-图像旋转(C/C++) 一、问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。 计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。 输入格式 二、输入格式 输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。 接下来n行每行包含m个整数,表示输入的图像。 三、输出格式 输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。 四、... 阅读详情

相关推荐

基于opencv-ANN的水果识别模型训练

本文通过opencv-ann-mlp训练模型,实现对五种水果进行分类识别。本文详细介绍该项目的各个过程,包括数据准备、预处理、样本读取、训练数据集制作、训练标签制作、模型参数设置、模型训练,模型测试验证等,总结该过程需要注意的事项。

qq_15985873的博客 3974

局域网常见的十个故障分析和排除方法

网络发生故障是难免的,重要的是如何在发生故障后快速地隔离和排除故障。网络维护人员应该配备相应的工具和相应的知识,以便及时、有效的找到和解决问题。本文讨论了网络技术人员和工程师经常遇到的十个令人头疼的问题,通过分析问题的描述和症状的了解,讨论使用何种工具来帮助查找这些故障。本文的案例都具有广泛地应用价值。**用户抱怨:**不能登陆或时断时续**故障症状:**只影响一个工作站,而该站原先没有问题**查找问题:**电缆终端链路太长。用户每天都移动,弯曲,连接和切断网络终端(尤其时膝上型笔记本电脑)。

Saki_Python的博客 6798

SDM660电源部分配置:

SDM660电源部分配置: Panel power supplies 1、Reference power supplies Description Name Regulator Voltage (V) Panel power supply 0 vddio PMIC 660/L11 1.8 Panel power supply 1 Lab PMIC 660/lab 4.6 Panel power s...

weixin_41811215的博客 4728

网工请自查,这十个技术问题还不会就out了

以及在这个网络中节点之间通信有什么样的规则,什么时候能够发送数据,什么时候不能发送,发送的数据,携带一个什么样的报头,里面包含什么内容,并且在这个网络中每一个节点也就是每一个接口,有一些什么样的二层地址,这些都是由二层的这些局域网和广域网协议所规定的。就是当设备之间连线线连好之后,所组成的网络是一个什么样的架构,设备之间通信需要些什么样的规则,每一个节点的地址使用什么样的格式,在通讯的时候发送的数据在二层应该封装一个什么样的报头,里面包含什么样的内容,这些,通过这个链接来实现计费的功能。

761

飞傲Fiio+foobar2000 实现dsd解码+灯正常显示

飞傲Fiio+foobar2000 实现dsd解码+灯正常显示。安装后可将DSD格式的数据通过ASIO驱动传输至DAC。安装后可识别DAC的ASIO驱动。安装后可识别DSD文件。

yanlei7993的博客 2301

通达信源码-金牛暴起

趋势1:=3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1) AND SJTJ,DOTLINE,COLORGRAY;谷:=(((DD-LLV(DD,21))/(HHV(DD,21)-LLV(DD,21)))*(4))*(25);{0,25指高度};

qq_57222058的博客 3525

程序员圈的五大黑话术语,你不懂就OUT了!学会这些,技术之路才能少走弯路!

默子一路走来,没少靠着谷歌和文档解决问题,当然,踩过的坑也不少。当你遇到问题时,先冷静下来,检查自己的操作是否正确,是否遗漏了什么。掌握这些“黑话”,不仅能让你更快融入技术圈,还能提升你的独立解决问题的能力。YAGNI提醒我们,专注于当前需求,保持代码的简洁和可维护性,是更高效的开发方式。程序员的90%问题都能靠谷歌解决,找到关键字,输入问题,往往就能获取灵感和解决方案。这样,你不仅解决了当前的问题,还拓展了自己的知识面。在代码的世界里,自查错误是基本功,能让人养成严谨的态度。大多数时候,答案在其中。

默子的博客,奇奇怪怪 3781

密码学:一文看懂Base64算法

Base64常常在我们开发中出现,我们可能只知道它是一串乱码(看不懂的符号),知道有时候知道我们需要把一些数据进行base64编码,有时候需要进行Base64解码。但是却不知道它的作用是什么?它存在的意义是什么?还有它是如何生成的?如何编码和解码?上述的疑问相信在你读完本篇文章之后烟消云散。下面开始正文。Base64是什么?它和加密解密操作有什么关系吗?没错,这就是经过Base64编码后的字符串。对它解码后,我们获得以下内容点个关注,是对我持续创作的最大的鼓励!

Shujie 1万+

微信联系开发者!遇到问题快速获取技术支持

本文介绍了如何在星图GPU平台上自动化部署unet person image cartoon compound人像卡通化 构建by科哥镜像,快速实现人像图片的实时卡通化处理。用户无需手动配置环境,即可通过WebUI上传照片并一键生成风格化图像,适用于社交媒体头像制作、创意营销素材生成等典型场景。

weixin_36364707的博客 199

(5)ModalAI VOXL2

Ardupilot官网关于《Non-GPS navigation》的翻译 —《(5) ModalAI VOXL2》。

无人机开发(开源Ardupilot) 1万+

UE5接入在线直播视频源,如hls(m3u8)格式

UE5接入在线直播视频源

专注GIS开发 9500

ESP32 上传失败怎么排查:从 Timed out 超时到一次烧录成功的完整思路

点击「上传」,编译一路绿灯,上传却吐出一屏红字,还停在 `Timed out waiting for packet header`?围绕 arduino-esp32(乐鑫官方维护的 ESP32 系列 Arduino 核心),把上传当成一条电路来检修:先看哪一段「断路」,再换线、配环境、进下载模式,最后走备用路线把固件送进芯片。 ## 先看清电路:上传失败到底断在哪一段 点下上传,后台其实是三段

gitblog_00914的博客 878

NVIDIA Isaac GR00T N1 人形机器人强化学习入门教程(二)详细步骤

LeRobot 格式 1.1 加载数据集 要加载数据集,我们需要定义以下 3 项内容: 在数据中显示图像帧 我们还可以对 LeRobotSingleDataset 类中的数据进行一系列转换。下面展示了如何对数据进行转换。 现在看看应用转换后的数据有何不同。 例如,对状态和操作进行规范化和串联,对视频图像进行裁剪、调整大小和颜色抖动。 二、GR00T 推断 本教程介绍如何使用 GR00

2506_90492529的博客 3013

史上最坑爹的Java代码:Hello, World!

大家好!我是老码农。《码农说》公众号的第一篇文章我们先从:Hello, World!聊起!

专注于分享最佳资源、最佳工具、有味道的技术文章 776

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 2024!深入了解 大语言模型(LLM)微调方法(非常详细)零基础入门到精通,收藏这一篇就够了
下一篇: 基于多模态知识图谱的多模态推理-MR-MKG(非常详细)零基础入门到精通,收藏这一篇就够了
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值