- 博客(18)
- 收藏
- 关注
原创 论文精读:Attention Is All You Need
Adam是一种常用的优化算法,它结合了Adagrad和RMSprop的优点,并加入了偏差修正。Adam的学习率是自适应的,可以根据每个参数的梯度大小自动调整学习率。具体来说,Adam使用指数移动平均估计梯度的一阶矩(即均值)和二阶矩(即方差),并将它们用于调整每个参数的学习率。Adam算法中有三个超参数需要设置:学习率、第一个指数衰减率(beta1)和第二个指数衰减率(beta2)。其中,beta1通常设置为0.9,beta2通常设置为0.999。另外,Adam还使用了一个小常数epsilon来避免除以零。
2023-03-28 02:32:30
536
1
原创 图像分类模型 I. 从LeNet到ResNet
从LeNet到ResNet,神经网络沿着越来越深方向演进。LeNetLeNet是最早发布的卷积神经网络,取得了与SVM性能相媲美的效果,广泛应用于ATM数字识别。代码实现模型亮点:1)使用2个卷积块(每个卷积块由卷积层、非线性激活函数、汇聚层组成)提取特征,后接3个全连接层进行图像分类。2)为了构造高性能的卷积神经网络,对卷积层进行排列,逐渐降低空间分辨率,同时增加通道数。知识点:feature map空间分辨率计算公式:N =⌊(W-K+2P)/S⌋ ...
2022-04-19 18:00:17
3600
原创 如何使用C语言写: Generic Queue
Model------------------------------------------------------------------------------------------------------------------------队列也是限制插入和删除位置的表.主要操作是enqueue和dequeue操作.enqueue:入队操作.在表的队尾(rear)
2013-02-27 09:56:25
3242
原创 "括号匹配, 中缀表达式转化为后缀表示式, 计算中缀表达式, 计算后缀表达式"完整代码
Index1. 括号匹配(Balancing Symbols)2. 中缀表达式转化为后缀表示式(Infix to Postfix Conversion)3. 计算中缀表达式(Calculate Postfix Expression)4. 计算后缀表达式(Calculate Expression -Dijkstra Algorithm)
2013-02-26 21:33:18
2506
原创 如何使用C语言写: 泛型链表
C语言泛型设计的原则------------------------------------------------------------------------------------------------------------------------使用C语言编写通用数据结构相对比较困难.其一, C语言本身不支持泛型编程的特性;其二, C语言不支持元语言.C语言只能使用v
2013-02-25 19:42:38
5248
原创 设计一个简易的处理器(10)--性能评估(完)
性能评价————最终需要的PIPE处理器已经设置完毕了,现在要评价它的性能,采用CPI这个指标进行评价.CPI: PIPE执行一条指令所需的平均时钟周期数.(1). PIPE的CPI直观判断PIPE采用了"加载互锁+转发"技术,转发技术不会降低流水线的吞吐量,而加载互锁是通过暂停技术来实现的,所以会降低流水线的吞吐量.这样基本上可以达到每个时钟周期发射一条新指令的目标,也就是P
2012-12-17 09:50:50
2428
原创 设计一个简易的处理器(9)--PIPE的硬件结构, 流水线控制逻辑
PIPE是最终要实现的简易处理器,本篇主要介绍PIPE的硬件结构和流水线控制逻辑. PIPE的硬件结构———— 流水化的最终实现-PIPEPIPE使用旁路转发技术,能够解决大多数形式的数据冒险,但是不能解决Load/Use冒险和控制冒险,这需要通过流水线控制逻辑来进行控制.PIPE的各个阶段的详见:wside-hcl.pdf,这篇文档使用HCL详细描述了PIP
2012-12-17 09:03:41
5007
2
原创 设计一个简易的处理器(8)--流水线冒险的避免
上一篇已经介绍了流水线的相关和冒险,本篇介绍避免流水线冒险几种技术. 暂停技术(Stalling)避免数据冒险————通过上一篇的介绍,PIPELINE的数据冒险只发生在读/取同一个程序寄存器的时候. 只需要在PIPE-(硬件结构图见本系列6)的基础上使用暂停(Stalling)技术来避免数据冒险.下面具体分析暂停技术的暂停条件和实现. 1.暂停条件源寄存器 -
2012-12-16 15:10:51
10978
原创 设计一个简易的处理器(7)--流水线的相关和冒险
PIPE-已经是一个流水线化的处理器了,但是当相近指令间存在相关时PIPE-会出现问题.后一指令引用前一指令的结果,是非常常见的,所以一个完整的处理器必须要解决这个问题.本文探讨流水线的两种形式的相关及其冒险. 相关的两种形式————相关有两种形式(1).数据相关.下一条指令要用到上一条指令计算出的结果.(2).控制相关.一条指令要确定下一条指令的位置.比如:跳转
2012-12-15 16:12:30
5691
原创 设计一个简易的处理器(6)--简单的流水线实现PIPE-
上一篇已经介绍了SEQ+的实现,本篇介绍流水线的通用原理及其简单的流水线实现PIPE-. SEQ/SEQ+的局限性————通过前面几篇文章介绍SEQ/SEQ+,不难发现SEQ/SEQ+的一些局限性.-实际中的SEQ/SEQ+太慢, CPU的时钟太慢,性能太差.-在每一个时钟周期中,必须更新一条指令的所有可见状态(包括存储器,寄存器文件,条件码和指令寄存器, P
2012-12-14 16:45:15
5247
原创 设计一个简易的处理器(5)--SEQ+ CPU的实现
最终目的是设计一个具有流水化的CPU.为了方便CPU实现流水化,将SEQ CPU重新安排计算阶段,将PC的计算挪到取指阶段,得到SEQ+ CPU. SEQ+:重新安排计算阶段————重新调整更新PC阶段在一个时钟周期开始时活动,使它计算当前指令的PC的值.下图是SEQ和SEQ+的PC计算的不同之处. SEQ+中为了计算当前的PC,需要使用寄存器来保
2012-12-11 22:37:43
3089
原创 设计一个简易的处理器(4)--SEQ CPU的实现(2):SEQ CPU的控制逻辑与硬件实现
接上文,本文介绍SEQ CPU的逻辑和硬件实现.着重使用HCL语言描述SEQ CPU的逻辑. Y86/SEQ概述————SEQ是 Sequential CPU的实现,表现在指令的执行要依次经历各个阶段(Fetch->Decode->Execut->Memory->WriteBack->PC Update).每一个指令在一个时钟周期内完成(这条指令执行的所有状态Stat
2012-12-11 21:03:01
5871
原创 设计一个简易的处理器(3)--SEQ CPU的实现(1): 将指令组织成阶段
本文是介绍SEQCPU(Sequential CPU)的实现的第一篇,着重介绍如何将Y86的指令组织成阶段. Y86/SEQ CPU————"设计一个简易的处理器"的第一篇中,我介绍了一个简易的指令集系统Y86,这里的SEQ CPU使用的就是Y86指令集.指令集详见(http://blog.youkuaiyun.com/dennis_fan/article/details/822
2012-12-10 22:17:16
3913
原创 设计一个简易的处理器(2)--处理器的硬件部件
处理器是一个数字系统, 所以设计一个简易的处理器有必要了解数字电路.本文就是介绍数字电路的基本概念,以及描述CPU中的一些主要的逻辑元件.通过使用HCL(HardSoft Control Language)描述这些逻辑元件的控制逻辑,使得可以抽象地了解它们的功能,而不必知道它们的内部构造. 数字电路的基本概念————数字电路可以分为两种:组合电路和时序电路.1.组合电
2012-12-09 22:30:34
3185
原创 设计一个简易的处理器(1)--定义指令集体系结构(ISA)
处理器的主要作用就是执行指令,那么设计处理器的第一步就是要定义或者兼容指令集体系结构(Instruction Set Architecture,ISA). 定义一个指令集体系结构,包括定义各种状态元素,指令集及编码,一组编程规范和异常事件处理. 传统的指令集的设计理念主要分为CISC和RISC两种设计理念.现代处理器比如IA32体系结构的指令集,已经不是单纯的CISC,设计时候已经结合
2012-11-26 16:15:32
7878
原创 结构体型的参数和返回值的C函数, GCC如何生成代码?
C代码与汇编代码有一点差别很大,即汇编语言程序设计中,各种数据类型之间的差别很小.汇编语言并没有提供诸如C语言结构体的抽象,它只是将C语言的结构体看成一个一个的元素. 本文探讨对于函数的参数和返回值有结构体型的函数, GCC是如何生成代码的? 通过分析代码,一方面探索GCC如何为C语言的结构体生成代码,另一方面, 分析C语言的函数调用过程和返回过程机制, 深入理解C语言函数调用的过程.
2012-11-22 20:21:14
4045
原创 判断C语言的算术运算越界问题
大量的安全漏洞是由于计算机算术运算的微妙细节引起的,具体的C语言,诸如符号数和无符号数之间转换,算术运算的越界都会导致不可预知的错误和安全漏洞,具体的案例数不胜数. 作为一个系统程序员,有必要对这些细节有深入的了解. 本篇参考csapp,主要介绍如何判断算术运算的越界问题(虽然本篇的代码经过大量的测试,但本人仍然无法保证代码的正确性,希望大家纠错).讲解的原则是"摆定理,不
2012-11-21 13:41:44
4790
原创 C语言的类型系统-编码, 类型转换及其规范
C语言的类型系统—————— 汇编语言将存储器看成一个虚拟存储器,即将存储器看成一个大的字节数组,汇编语言并没有提供类型系统. C语言将字节数组抽象成不同长度的字节数组.本文介绍C语言的类型系统以及类型之间相互转换的原则. C语言的数据类型———— C语言的类型是相当丰富的,它提供多种类型. C语言的数据类型具体有:1.基本类型:整型(short
2012-11-20 15:52:31
2811
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人