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,供后面的网络使用。

    一般主要出现在目标检测或者分类网络结构中。

    通常用VGGNetResnetNiN Block等等。是整个网络的核心组成部分。

    因为这些backbone特征提取能力是很强,并且可以加载官方在大型数据集(PascalImagenet)上训练好的模型参数,然后接自己的网络,进行微调finetune`即可。

4 SOTA

4.1 中英文直译

state-of-the-art

4.2 解释说明举例

  • SOTA算法性能在当前属于最佳性能
  • 如果新算法以SOTA作为benchmark,比SOTA效果好,这当然是最好的了。
  • 但如果比不过SOTA,能比其他benchmark要好,且方法有一定创新,也是可以发表的。

5 比较说明总结

  • benchmark是一个过程,baselinebenckmark这个过程中的一次实例,SOTA是比较出来最好的结果。

  • benchmark一般是和同行中认可度比较高的算法比较,比牛算法还好,那你可以考虑发好一点的会议/期刊。

  • baseline一般是自己算法优化和调参过程中自己和自己比较中的基础起点,目标是越来越好,当性能超过benchmark时,可以发表了。当然有些时候文章中的baseline指代其他论文提出的方法,所以阅读论文的时候要结合语境,灵活理解。

  • 当性能甚至超过SOTA时,就考虑顶会顶刊。

LAST、参考文献

在计算机视觉论文中benchmark和baseline的区别_贱小杜的博客-程序员宅基地 - 程序员宅基地

神经网络中-baseline,benchmark,backbone都是什么意思?_peacefairy的博客-程序员宅基地 - 程序员宅基地

(1 封私信 / 82 条消息) baseline和benchmark有什么区别? - 知乎

(1 封私信 / 82 条消息) 深度学习网络中backbone是什么意思? - 知乎

以上是关于Golang中的benchmark的主要内容,如果未能解决你的问题,请参考以下文章

golang Golang中的字符串连接

golang Golang中的简单队列实现

golang Golang中的Http Redirect

golang Golang中的简单HTTP API

golang Golang中的信号量示例实现

golang 循环切片通过golang中的切片使用范围