【发布时间】:2016-04-27 04:16:26
【问题描述】:
我使用这个命令在 caffe 中对我的 ConvNet 进行基准测试:
./build/tools/caffe time -model models/own_xx/deploy.prototxt -weights examples/RSR_50k_all_1k_db/snapshot_iter_10000.caffemodel -gpu=0
它运行良好并生成以以下结尾的输出:
I0426 16:08:19.345427 15441 caffe.cpp:377] Average Forward pass: 13.5549 ms.
I0426 16:08:19.345484 15441 caffe.cpp:379] Average Backward pass: 10.7661 ms.
I0426 16:08:19.345527 15441 caffe.cpp:381] Average Forward-Backward: 25.2922 ms.
I0426 16:08:19.345579 15441 caffe.cpp:383] Total Time: 1264.61 ms.
I0426 16:08:19.345628 15441 caffe.cpp:384] *** Benchmark ends ***
在一些教程中,我看到这个家伙以某种方式简单地从平均前向传递中推断出分类时间。但是,我找不到任何解释如何做到这一点的公式或材料。这两个实体之间实际上存在某种联系吗?还有哪些其他因素涉及迭代次数和批量大小?我的目标是准确预测我的 ConvNet 在 GPU 上的分类时间。
更新:为了不显得完全无知,我将在这里补充一点,我有一个基本概念,即前向传递是输入生成相对输出所花费的时间,因此它也可以称为推理时间。但是,我感兴趣的是知道这是否是真的,而不管批量大小和迭代如何?我尝试过,但在基准测试期间,caffe 不提供任何“批处理”选项。
【问题讨论】:
-
你的 deploy.prototxt 有输入层吗?查看 prototxt 中定义的输入大小,这将告诉您 caffe 用于计时的批量大小
-
@Shai 是的,当我自己编写网络时,我确信批量大小。我无法弄清楚它与图像的前向传递和分类时间有何关系。找到图像的分类时间是我的目标。
标签: benchmarking caffe conv-neural-network