在caffe中的AlexNet实现中,我在deploy.prototxt文件中看到了以下层:
layer {
name: "drop7"
type: "Dropout"
bottom: "fc7"
top: "fc7"
dropout_param {
dropout_ratio: 0.5
}
}
Run Code Online (Sandbox Code Playgroud)
现在,辍学的关键思想是在训练期间从神经网络中随机丢弃单位(连同他们的连接).
这是否意味着我可以直接从deploy.prototxt中删除此图层,因为此文件仅用于测试期间?
我用这个命令来测试我的ConvNet在caffe中:
./build/tools/caffe time -model models/own_xx/deploy.prototxt -weights examples/RSR_50k_all_1k_db/snapshot_iter_10000.caffemodel -gpu=0
Run Code Online (Sandbox Code Playgroud)
它运行正常并生成输出,结束于:
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 ***
Run Code Online (Sandbox Code Playgroud)
在一些教程中,我看到这个家伙只是简单地推断出平均前锋传球的分类时间.但是,我找不到任何解释如何做到这一点的公式或材料.这两个人之间真的有一些联系吗?还涉及哪些其他因素,例如迭代次数和批量大小?我的目标是准确预测我的ConvNet在GPU上的分类时间.
更新:为了不显得完全无知,我将在此添加一个基本思路,即前向传递是输入生成相对输出所花费的时间,因此它也可以称为推理时间.但是,我感兴趣的是不管批量大小和迭代如何都知道这是否正确?我尝试过,但在基准测试期间,caffe不提供任何"批量"选项.