- 博客(59)
- 资源 (6)
- 收藏
- 关注
原创 直观解读【时间反向传播bptt】
时间反向传播bptt每个时间步的隐状态和输出为:ht=f(xt,ht−1,wh),ot=g(ht,wo),\begin{aligned}h_t &= f(x_t, h_{t-1}, w_h),\\o_t &= g(h_t, w_o),\end{aligned}htot=f(xt,ht−1,wh),=g(ht,wo),其中fff和ggg分别是隐藏层和输出层的变换。因此,我们有一个链{…,(xt−1,ht−1,ot−1),(xt,ht,ot),…}\{\ldots, (x
2022-04-27 18:45:33
421
原创 详细版【循环神经网络RNN】(邱锡鹏)
循环神经网络RNN详细代码实现见同专栏下博文给网络增加短期记忆能力的方法延时神经网络:在前馈网络中的每个非输出层都添加一个延时器,记录神经元的最近几次活性值。在第 t 个时刻,第 𝑙 层神经元的活性值依赖于第 𝑙 − 1 层神经元的最近𝐾 个时刻的活性值,即 𝒉𝑡(𝑙) = 𝑓(𝒉𝑡(𝑙−1) ,𝒉𝑡-1(𝑙−1) , ⋯ , 𝒉𝑡−𝐾(𝑙−1)),其中𝒉𝑡(𝑙) ∈ ℝ𝑀𝑙 表示第 𝑙 层神经元在时刻 𝑡 的活性值。有外部输入的非线性自回归模型NARX自回归模型AR:用一个变
2022-04-24 23:19:56
846
原创 详细剖析【卷积神经网络CNN】现代模型
典型的CNN具体代码实现可见同专栏下的博文LeNet-5(手写识别系统)LeNet-5共有7层,接受输入图像大小为28 × 28 (图错了)输出对应 10个类别的得分C1层:卷积层,使用6个5×5的卷积核,得到6组大小为28×28 = 784 的特征映射(32-5+1)神经元数量为 6 × 784 = 4704,可训练参数数量为 6 × 25 + 6 = 156,连接数为156 × 784 = 122304(包括偏置)**说明:**回顾一下前面的卷积模型,这里输入图像只有一个特征(D=1)每
2022-04-24 23:13:29
1517
1
原创 详细版【卷积神经网络CNN】基础模型(邱锡鹏)
卷积神经网络CNN全连接前馈问题:参数太多:效率低且容易过拟合局部不变特性:忽略物体的局部不变性特征,比如图像中的尺度缩放、平移、旋转等操作不影响其语义信息。如果使用全连接,则所有维度都被一视同仁,如(x1,y1) (x2,y2)中的四个数字被等价看待,但是实际上x1和x2的关联度(相关性)会高于x1和y1,一般需要进行数据增强来提高性能。卷积神经网络CNN是一种具有局部连接、权重共享、汇聚等特性的深层前馈神经网络。一维卷积(信号处理中使用)𝑦𝑡= ∑ 𝑤𝑘𝑥𝑡−𝑘+1 ( 1
2022-04-24 23:10:49
1572
1
原创 图解【反向传播算法】——附详细的矩阵算法
反向传播算法首先明确!反向传播算法其实是对误差进行反向传播,其底层逻辑还是链式法则。自动梯度计算数值微分:对 𝑥 加上一个很少的非零的扰动 Δx,利用导数原始定义求解符号微分:用计算机来处理带有变量的数学表达式。自动微分AD:将所有的数值计算分解为基本操作,然后利用链式法则自动计算复合函数的梯度自动微分示例:𝑓(𝑥; 𝑤, 𝑏) = 1 / exp ( − (𝑤𝑥 + 𝑏)) + 1分解为基本操作后构建计算图,连边上的红色数字表示前向计算时复合函数中每个变量的实
2022-04-24 23:03:24
2079
原创 详细版【全连接前馈神经网络】(邱锡鹏)
全连接前馈神经网络前馈神经网络又叫多层感知器,但其实是由多层 的 Logistic 回归具体流程令𝒂(0) = 𝒙,前馈神经网络通过不断迭代此公式进行信息传播:𝒛 (𝑙) = 𝑾(𝑙)𝒂 (𝑙−1) + 𝒃(𝑙) , 𝒂(𝑙) = 𝑓𝑙 (𝒛(𝑙)) 首先根据第 𝑙−1 层神经元的活性值𝒂 (𝑙−1) 计算出第 𝑙 层神经元的净活性值 𝒛 (𝑙),然后经过一个激活函数得到第 𝑙 层神经元的活性值。每个神经层就是一个仿射变换和一个非线性变换,相当于 𝒛 (𝑙) = 𝑾(𝑙)𝑓𝑙−1(𝒛(𝑙
2022-04-24 22:55:54
2321
原创 动手学习pytorch之【CNN】——基础模型代码实现
Convolutional-NNSimple-CNN如果想看原理的话,请看我的同专栏下的文章一个简单的多输入通道运行过程示意图:基础实现:import torchfrom torch import nnfrom d2l import torch as d2l# 自定义的二维互相关操作def corr2d(X, K): h, w = K.shape Y = torch.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1)
2022-04-24 22:52:13
1194
原创 动手学习pytorch之【感知机】——基础神经网络代码实现
Perceptrons激活函数的作用:防止隐藏层经过合并后退化为原本的单层线性模型。ReLU线性修正函数是最受欢迎的激活函数(RELU(x) = max(x,0))。另外,挤压函数sigmoid也很受欢迎(sigmoid(x) = 1 / ( 1 + exp(-x) ),注意求导后是 sigmoid(x)( 1- sigmoid(x) )。torch.nn.Parameter():self.v = torch.nn.Parameter(torch.FloatTensor(hidden_s
2022-04-24 22:47:37
1798
原创 动手学习pyTorch之【线性模型】—— 具体代码实现
Linear-regression一些pytorch的函数介绍基础y = torch.tensor([0, 2])y_hat = torch.tensor([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]])y_hat[[0, 1], y]tensor([0.1000, 0.5000])相当于获取 (0,0) 和 (1,2)正态分布torch.normal(mean, std, *, generator=None, out=None)# 从一个标准正态分布
2022-04-24 22:44:37
736
原创 动手学习pyTorch之【计算过程】——从基础模块类开始
Computation神经网络块:描述单个层、由多个层组成的组件或整个模型本身(模块化)。块由类表示,它的任何子类都必须定义一个将其输入转换为输出的前向传播函数, 并且必须存储任何必需的参数。 注意,有些块不需要任何参数。为了计算梯度,块还必须具有反向传播函数。 在自定义时,由于自动微分提供了一些后端实现,我们只需要考虑前向传播函数和必需的参数。模块实例:nn.Sequential是一种表示一个块的类,它定义了一种特殊的Module,即维护了一个由Module组成的有 序列表。上面的实例化例子中,两个
2022-04-24 22:40:54
393
原创 探讨【查找】的经典题目(很重视细节)
查找二分查找看似简单,思路也很清晰,但是在实际编程很容易因为各种边界问题而出问题,尤其是当区间中最后只剩下一两个数时,非常容易陷入死循环。经常结合递归来解题。练手题:69(数学解法) 34 540 434:在排序数组中查找元素的第一个和最后一个位置相当于实现C++ 里的 lower_bound 和 upper_bound 函数。我们先对半分,然后根据中间元素向两边进行扩展(或单边)。要非常注意死循环问题和没找到的情况。class Solution {public: int lo
2022-04-24 22:36:51
136
原创 详细版【线性模型】(邱锡鹏)
线性模型线性组合函数:𝑓(𝒙; 𝒘) = 𝑤1𝑥1 + 𝑤2𝑥2 + ⋯ + 𝑤𝐷𝑥𝐷 + 𝑏 = 𝒘T𝒙 + 𝑏,其中 𝒘 = [𝑤1 , ⋯ , 𝑤𝐷] T 为 𝐷 维的权重向量,𝑏为偏置。在分类问题中,由于输出目标 𝑦 是一些离散的标签,而 𝑓(𝒙; 𝒘) 的值域为实数,因此需要引入一个非线性的决策函数𝑔(⋅)来预测输出目标 𝑦 = 𝑔(𝑓(𝒙; 𝒘)),其中𝑓(𝒙; 𝒘)也称为判别函数。一个线性分类模型LCM或线性分类器LC是由一个(或多个)线性的判别函数 𝑓(𝒙; 𝒘) = 𝒘T𝒙 + 𝑏
2022-04-18 10:14:26
458
原创 详细入门【自顶向下LL(1)】
确定的自顶向下分析思想首先要解决从文法的开始符号出发,如何根据当前的输入符号(单词符号)唯一确定选用哪个产生式替换相应非终结符往下推导(从左到右一一匹配)。几个关键变量First集合:当前符号可能产生式的首字母,为空则为 ϵ\epsilonϵ。算法如下:(大白话就是直接当前字符可以推出的产生式右端的第一个字符,如果是非终结符就转换成寻找当前字符的first,终结符直接加入。注意一下如果first含有空字符,还得将follow加入)Follow集合:紧跟当前符号的下一个字符,结尾用#表示。算..
2022-04-15 21:12:41
204
原创 辩证看待MLR.5【异方差性】
注:我的笔记是markdown,细小的公式都用了截图,虽然尝试了借用git来自动存图片,但是体验感很不好,所以全部就直接把笔记截图上传了。
2022-04-15 20:55:24
275
原创 接下来【多元回归:虚拟变量】
注:我的笔记是markdown,细小的公式都用了截图,虽然尝试了借用git来自动存图片,但是体验感很不好,所以全部就直接把笔记截图上传了。
2022-04-15 20:48:27
697
原创 【多元回归】进阶
注:我的笔记是markdown,细小的公式都用了截图,虽然尝试了借用git来自动存图片,但是体验感很不好,所以全部就直接把笔记截图上传了。
2022-04-15 20:41:47
81
原创 下一步【多元回归:推断】
注:我的笔记是markdown,细小的公式都用了截图,虽然尝试了借用git来自动存图片,但是体验感很不好,所以全部就直接把笔记截图上传了。
2022-04-15 20:35:13
83
原创 入门【多元回归:估计】
注:我的笔记是markdown,细小的公式都用了截图,虽然尝试了借用git来自动存图片,但是体验感很不好,所以全部就直接把笔记截图上传了。
2022-04-15 20:28:09
80
原创 从【简单线性回归SLR】开始
注:我的笔记是markdown,细小的公式都用了截图,虽然尝试了借用git来自动存图片,但是体验感很不好,所以全部就直接把笔记截图上传了。
2022-04-15 18:42:29
168
原创 详细版【机器学习概述】(邱锡鹏)
机器学习(Machine Learning,ML)是指从有限的观测数据中学习(或“猜测”)出具有一般性的规律,并利用这些规律对未知数据进行预测的方法。深度学习是机器学习的一个分支,是指一类问题以及解决这类问题的方法,其采用的模型一般比较复杂语义鸿沟(学习的关键):输入数据的底层特征和高层语义信息之间的不一致性和差异性。如给定一些“车”的图片,它们在像素级别上的表示(即底层特征)差异性非常大。机器学习概述机器学习:让计算机从数据中进行学习,得到某种知识/规律(早期被称为模式识别)一些基.
2022-04-15 18:27:52
1183
原创 详细总结【贪心】算法解题技巧和规律
贪心顾名思义,贪心就是让每次操作都满足局部最优性质,从而使最终得到的结果全局最优(《算法导论》中有相关证明,但是这里我们不care)贪心的难点在于,如何提取出正确的子问题。贪心算法经常涉及到排序和选择,因为我们总是试图寻找能符合当前条件的最小消耗,如最少区间个数,最少饼干等等。或者说,我们总是针对单个样本或一些样本寻找它们符合条件的情况,最后将所有样本划分进行组合,但是还有一种贪心经常容易被忽略:将目标条件进行拆分,每次只针对一个子目标进行处理,分别处理n次,其中n是子问题的个数,最常见的就是两次遍历。
2022-04-14 21:32:01
1335
原创 深入解读并总结【排序】的解题技巧和注意事项
排序重要性……不用我说了。我们需要能够自己熟练地实现所有的基本算法(手写程度),尤其注意排序过程中是否取等的问题,while循环退出条件等细节。综合的测评题:915对了,我们先来观摩一下STL容器中的std::sort()的底层是怎么实现的吧。原理篇首先,关系型容器(底层为RB-tree)拥有自动排序功能,不需要调用sort,序列型容器中的stack,queue等有特定出入口,不允许排序,因此一般sort()针对的是vector和deque(list是双向迭代器,sort要求随机迭代器,因此
2022-04-14 14:14:51
433
原创 【路由协议】和【应用协议】
路由协议静态路由是实现设置好路由器和主机中并将路由信息固定的一种方法,其设置通常是使用者手工操作。动态路由则是由路由器们自己统计设置,故路由协议很重要。建议将这两种方法结合起来使用。动态路由会给相邻路由器发送自己已知的网络连接信息,然后像接力一样依次传递给其他路由器。根据路由控制范围分类,相当于一个分层的管理IGP:自治系统(路由选择域)内部动态路由采用的协议是域内路由协议。EGP:自治系统之间的路由控制采用的是域间路由协议。路由算法距离向量算法DV:根据距离(代价)和
2022-04-11 13:51:08
4832
原创 【TCP与UDP】基础知识
TCP与UDP传输层根据端口号确定要目标的应用程序。TCP请求连接的包是SYN包。各个端口上会有一些一直在监听的程序,这些服务端程序在UNIX系统当中叫做守护进程,如http的是httpd(http守护进程),ssh的服务端程序是sshd(ssh守护进程)。在UNIX系统中只需要启动一个可以代表它们接受客户端请求的inetd(互联网守护进程)服务程序即可,这是一个超级守护进程,该进程收到客户端请求后会创建fork新进程并转换exec为sshd等各个守护进程。端口号(程序地址)的确定:静态方法(固定,
2022-04-11 13:47:48
5437
原创 IP即网际协议
IP即网际协议数据链路层的主要功能是在互连同一种数据链路的节点(主机和路由器)之间进行包传递。一旦跨越了多种数据链路就需要借助网络层。IP分为三大模块:IP寻址路由(最终节点为止的转发):一跳(1 Hop)是指利用数字链路层以下分层的功能传输数据帧的一个区间。多跳路由是指路由器或主机在转发IP数据包时只指定下一个路由器或主机,而不是将到最终目标为止的所有通路全部指定出来。所有主机都维护一张路由控制表(网络A->路由器B等,可以了解目标地址的方向)IP分包和组包:不同数据链路的最大传
2022-04-11 13:43:40
4214
原创 【数据链路层】基础知识
数据链路层MAC地址:长48比特,在使用网卡NIC的情况下MAC地址会被烧入ROM中。共享介质网络/非共享介质网络共享介质网络:多设备共享一个通信介质(总线形式)半双工通信,各个设备间需要做通信协调争用方式:争夺获取数据传输权力,也叫载波监听多路访问(CSMA)先到先得,可能冲突。改进策略是CSMA/CD(如果载波信道上没有数据流动直接发送,否则检查是否冲突,若冲突放弃发送,并释放载波信道,延时一段时间后再次争用介质,重新发送帧)改进:交换集线器令牌传递方式:只有获得令牌的
2022-04-11 13:38:49
2863
原创 关于【链表】的解题规律
链表作为一个基本到不行的数据结构,链表可以说基本上都是担当着服务的角色。但是链表本身也有非常多有趣的性质和算法的。单向链表的一大特点是无法知道长度和上一个结点,只能知道当前结点和下一个结点,所以我们经常利用快慢指针的方法来在线性时间内获取特定位置的元素。另外在做题过程中,为了避免单独给头节点初始化,或删除结点时分类讨论,常常单独new一个头结点。对了,顺便说一下,删除结点时最好释放一下内存,malloc和free配套,new和delete配套。free和delete都只把指针所指向的内存释放掉,并没有
2022-04-11 13:33:26
973
原创 探讨【字符串】的题型和解法
字符串遇到的问题无非就这么几类:字符串翻转/公共子序列/回文子串/重复子串。首先我们发现,字符串经常和动态规划挂钩!还有一些独特的算法,如中轴法,滑动窗口(分固定和不固定)。此外,我们还要关注一些经典问题:KMP算法,马拉车算法,表达式求解等。字符串问题经常用到unordered_map和unordered_set两种stl容器。练手题:1143(dp出现过,高频) 225 696(题解很有趣)3(滑动窗口问题)下面进行具体讲解1143:求给定字符串的最长公共子序列这是一个非常明显的动态规
2022-04-11 13:32:22
684
原创 探讨【分治】的解题技巧
分治分治问题和动态规划非常类似,通过把原问题分为子问题,再将子问题进行处理合并,从而实现对原问题的求解。其时间复杂度一般用主定理进行求解。另外,自上而下的分治可以和备忘录结合,避免重复遍历相同的子问题,也可以换用自下而上的动态规划方法求解。注意,分治经常利用到递归。练习题:241(非常经典) 932(说实话我觉得思路挺难想的) 312(Hard,真的挺难想)下面来具体看看每道题的解法:241:给定一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所
2022-04-11 13:29:49
579
原创 TCP/IP基础知识
TCP/IP基础知识基础知识:演变例程/RFC是具体协议内容/ TCP/ip是为使用互联网而开发制定的协议族TCP/IP协议分层模型硬件(物理层):相当于以太网或电话线路等物理层设备网络接口层(数据链路层):硬件与操作系统之间起桥梁作用的软件。互联网层(网络层):使用IP协议。基于IP地址转发分包数据。主机和路由器都必须实现IP功能,其他如网桥等就不一定。IP :跨越网络传送数据包,使整个互联网都能收到数据的协议。IP协议使得数据能够发送到地球的另一端,这期间它使用IP
2022-04-05 18:56:58
2671
原创 计算机网络基础知识
网络基础知识计算机网络按照规模可以分为WAN(广域网)和LAN(局域网)协议:IP,TCP,HTTP等,LAN中常用IPX/SPX等。协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”,只有使用相同的协议才能进行通信。就好比不同国家的语言,可以理解成一套沟通合约类比:语言是协议,聊天过程是通信,聊天内容是数据计算机从物理连接层面到应用程序的软件层面各个组件都必须严格遵循协议才能通信。协议分层与OSI参考模型(分七层)每个分层都接受下一层所提供的特定服务,并为上一层
2022-04-05 18:54:26
982
原创 详细总结【动态规划】的解题规律
首先,我们需要确定适用动态规划这种算法的题目特征,毕竟笔试题不会好心地在旁边标上动态规划的标签。维基百科:动态规划在查找有很多重叠子问题的情况的最优解时有效……只能应用于有最优子结构的问题。听起来非常云里雾里(专业总结都是这么抽象)。我们先来理解一下最优子结构。最优子结构是局部最优解能决定全局最优解。也就是说,动态规划其实和分治方法非常类似,都是通过组合子问题的解来求解原问题,但是分治方法划分的子问题互不相交,而动态规划的子问题则互相重叠。为了减少复杂度,保证每个子问题只求解一次,我们
2022-04-05 13:19:35
207
原创 创建高性能的索引
创建高性能的索引索引在存储引擎层实现B-Tree索引MyISAM使用前缀压缩技术使得索引更小,通过数据的物理位置引用被索引的行;InnoDB实际使用B+Tree,按照原格式存储,根据主键引用被索引的行。叶子节点指向的是被索引的数据。BTree对索引列是顺序组织存储的,适合查找范围数据适合:全值匹配(和索引中所有列进行匹配);匹配最左前缀(如只使用索引第一列);匹配列前缀(只用某列开头部分);匹配范围值;精确匹配某一列并范围匹配另一列;只访问索引的查询限制:非最左列开始查找无法使用;不
2022-04-05 12:10:53
127
原创 关于【操作系统概述】
系统概述4个主要的结构化部件处理器的一种功能是与存储器交换数据。内部寄存器:存储器地址寄存器MAR:确定下一次读/写的存储器地址存储器缓冲寄存器MBR:存放要写入存储器的数据或从存储器读取的数据。输入/输出地址寄存器:用于确定一个特定的输入/输出设备输入/输出缓冲寄存器:用于在输入/输出模块和处理器间交换数据指令的执行:单个指令需要的处理为一个指令周期,包括取指阶段和执行阶段。下面这个例子好好过!注意要取的指令地址存储在PC中,IR中第一位S代表的含义,
2022-04-05 12:04:53
263
原创 STL超全总结和梳理
常用容器的特点及适用情况string:与vector相似的容器,专门用于存储字符。随机访问快,在尾位置插入/删除速度快array:固定大小数组。支持快速随机访问,不能添加或者删除元素vector:可变大小的数组。底层数据结构为数组,支持快速随机访问,在尾部之外的位置插入或者删除元素可能很慢list:双向链表。底层数据结构为双向链表,支持双向顺序访问。在list任何位置插入/删除速度很快s_list:单向链表。支持单项顺序访问。在forward_list任何位置插入/删除速度很快deque:..
2022-04-02 16:07:36
645
原创 空间配置器 & 仿函数 & 配接器
仿函数又名函数对象function objects。函数指针可以达到“将整组操作当作算法的参数”,如将operator<包装成一个所谓的仿函数,但是函数指针毕竟毕竟不能满足STL对抽象性的要求。可配接adaptable的关键unary_functionbinary_function算术类仿函数关系运算类仿函数逻辑运算类仿函数证同,选择,投射空间配置器sub-allocation隐藏在container后面,allocator。不称为内存配置
2022-04-02 15:50:04
101
原创 详细总结STL自带的【算法】
算法质变算法(会改变区间内元素内容)和非质变算法,根据需求不同寻找不同的迭代器(只读只写等等)copy()set相关算法考虑重复元素后set运算结果和直观结果有细微差别!操作都稳定set_union 并集注意:相同取S1的元素!默认已经排序好了,用了归并排序中合并时一样的思想set_intersection 交集set_different差集S1-S2set_symmetric _difference 对称差(s1-s2)∪(s2-s1)其他算法adjacen
2022-04-02 15:38:12
563
原创 逻辑架构概述
连接/线程处理:计算机网络部分,非MySQL独有每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,服务器会负责缓存线程(不需要为每一个新建的连接创建或销毁进程)
2022-04-02 15:14:40
1491
原创 服务器性能剖析
Q:如何确认服务器是否达到了性能最佳的状态 / 找出某条语句为什么执行不够快 / 诊断被用户描述成“停顿”,“堆积”,“卡死”的某些间歇性疑难故障
2022-04-02 14:49:46
411
原创 关于基准测试
基准测试WHY :基准测试是唯一方便有效的可以观察系统在不同压力下的行为,评估系统的容量的方法(在新系统正式上线到生产环境之前,进行基准测试是个好习惯。切勿相信提供商的言辞)基准测试并不是基于真实压力的测试,其压力通常较为单调简单。除了数据量,数据和分布不同外,基准测试在实际情况下通常会要求快速完成,压测实施者往往会施以实际中远远不能达到的且单调请求的压力,虽然有益于测量系统最大性能容量,但往往会使系统或者压测软件崩溃,得不到真正符合实际的数值。例如:当压测发现新系统可以支持原系统4
2022-04-02 14:48:44
2586
C++实现航空公司航线图
2021-08-15
C++语言实现可编程计算器
2021-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人