Golang中的benchmark
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang中的benchmark相关的知识,希望对你有一定的参考价值。
参考技术A 得到结果:上面也可以用table driven的方式来运行多个case,这里类似于 t.Run 方法,需要使用 b.Run 方法来执行多个case比如:
深度学习中的Benchmark,Baseline,Backbone和SOTA的比较说明举例分析
1 Benchmark
1.1 中英文直译
基准;水准点;衡量尺度
A benchmark is something whose quality or quantity is known and which can therefore be used as a standard with which other things can be compared.
1.2 解释说明举例
-
是一种标准、规则,不一定是最好的,但一定是最有代表性的,已经被广泛研究且被广泛认可的,对它性能的表现形式、测量方法都非常熟悉,因此可以作为标准方法来衡量其他方法的好坏。
-
主要用于在对比的时候,形容别人的方法,以此作为标准
-
所用数据称之为
benchmark data
;所用方法称之为benchmark method
-
一般提出的方法的在
benchmark data
上得出的结果与benchmark method
的结果对比才能知道你的方法是否足够好。
R里面有一个包就叫做 benchmark(Benchmark Experiments) 里面对
benchmark
的解释挺好的:
The benchmarking process abstractly consists of three levels: Setup, Execution and Analysis.(1) The Setup defines the design of a benchmark experiment; data set,candidate algorithms, performance measures and a suitable resampling strategy are declared.
(2) ln the Execution level the defined setup is executed. Here, computational aspects play a major role; an important example is the parallel computation of the experiment on different computers.
(3) In the Analysis level the computed raw performance measures are analyzed using exploratory and inferential methods.
2 Baseline
2.1 中英文直译
基础;起点
a line or measurement that is used as a starting point when comparing facts
2.2 解释说明举例
-
在比较中作为“参照物”的存在,强调比较,在比较中作为参照物,基线;目的是比较提出算法的性能或者用以比较彰显提出算法的优势。
比如,
difference between baseline and benchmark in performance of an application
里面举的一个微软测试操作系统启动时间的例子。在Win7的测试阶段,为了比较不同版本 Win7的启动时间,在相同配置的电脑上安装XP-RTM,XP-SP2, Vista-RTM,Vista-SP1, Vista-SP2和之前的各个beta版本,这些系统就都是 baseline,因为对这些系统的启动过程,微软的工程师都很清楚。然后在相同配置的电脑上启动Win7就能比较出来,在哪个环节出现了问题,导致了什么问题。 -
主要关注自己提出的方法
比如最原始最简单的方法出来的结果(参照物)。然后再这个基础上改进,增加各种组件,可以看出提升了多少,通过
baseline
我们可以知道这个方法能不能work,有多少提升。baseline
有一个自带的含义就是“性能起点”。这里还需要指出其另一个应用语境,就是在算法优化过程中,一般version1.0
是作为baseline
的,即这是你的算法能达到的一个基本性能,在算法继续优化和调参数的过程中,你的目标是比这个性能更好,因此需要在这个base line的基础上往上跳。baseline
评估是研究、计划、监控和评价机制的最关键因素。在开始一项特定的任务之前执行baseline
评估可以查看变更的干预程度。给一项具体工作设置baseline
并且作为基础是为了对比干预发生前后的情形。 -
一个算法被称为baseline,基本上表示比这个算法性能还差的基本上不能接受的,除非方法上有革命性的创新点,而且还有巨大的改进空间和超越
benchmark
的潜力,只是因为是发展初期而性能有限。 -
在很多的竞赛中,我们都会见到这个名词
baseline
,一般都是在此基础上进行‘“魔改”,以它为标准,来判断改进的好坏。
2.3 实现过程
benchmark
过程包括三个步骤:
- 设置(setup):根据实验目的做得设置,通常也是在论文实验结果之前要交代的实验设置,根据所要研究的问题选择合适的数据集、算法、对比算法、比较参数等等。
- 执行(execution):这个部分就是按照上一步的设置进行实验。
- 分析(analysis):通过各种分析方法分析上一步得到的实验结果,用来佐证提出的算法或者假设。
3 Backbone
3.1 中英文直译
脊柱,人的主干。
the row of small bones that are connected together down the middle of the back
the most important part of a system, an organization, etc. that gives it support and strength
3.2 解释说明举例
-
在神经网络中,是网络中的主干结构,也称主干网络。
-
用来做特征提取的网络,代表网络的一部分,一般是用于前端提取图片信息,生成特征图
feature map
,供后面的网络使用。一般主要出现在目标检测或者分类网络结构中。
通常用
VGGNet
,Resnet
,NiN Block
等等。是整个网络的核心组成部分。因为这些
backbone
特征提取能力是很强,并且可以加载官方在大型数据集(Pascal、
Imagenet)上训练好的模型参数,然后接自己的网络,进行微调
finetune`即可。
4 SOTA
4.1 中英文直译
state-of-the-art
4.2 解释说明举例
SOTA
算法性能在当前属于最佳性能- 如果新算法以
SOTA
作为benchmark
,比SOTA
效果好,这当然是最好的了。 - 但如果比不过
SOTA
,能比其他benchmark
要好,且方法有一定创新,也是可以发表的。
5 比较说明总结
-
benchmark
是一个过程,baseline
是benckmark
这个过程中的一次实例,SOTA
是比较出来最好的结果。 -
benchmark
一般是和同行中认可度比较高的算法比较,比牛算法还好,那你可以考虑发好一点的会议/期刊。 -
baseline
一般是自己算法优化和调参过程中自己和自己比较中的基础起点,目标是越来越好,当性能超过benchmark
时,可以发表了。当然有些时候文章中的baseline
指代其他论文提出的方法,所以阅读论文的时候要结合语境,灵活理解。 -
当性能甚至超过SOTA时,就考虑顶会顶刊。
LAST、参考文献
在计算机视觉论文中benchmark和baseline的区别_贱小杜的博客-程序员宅基地 - 程序员宅基地
神经网络中-baseline,benchmark,backbone都是什么意思?_peacefairy的博客-程序员宅基地 - 程序员宅基地
(1 封私信 / 82 条消息) baseline和benchmark有什么区别? - 知乎
(1 封私信 / 82 条消息) 深度学习网络中backbone是什么意思? - 知乎
以上是关于Golang中的benchmark的主要内容,如果未能解决你的问题,请参考以下文章