将输入图层重塑为单个通道和多个图像

时间:2018-07-05 05:11:26

标签: c++ machine-learning neural-network deep-learning caffe

在我挑选的一些参考代码中,有:

net_->input_blobs()[0]->Reshape(1, 3, height, width);

我的prototxt有:

input_shape {
    dim: 1
    dim: 3
    dim: 260
    dim: 347
}

我被间接告知,所提供的模型已针对灰度进行了调整(我们既有颜色也有灰度prototxt),并且当前使用的Python代码使用具有三个相同通道的灰度输入。 / p>

现在,我想在一次调用net_->Forward();的过程中要么全部处理要么分别处理4张图像,然后将这4张图像作为单通道灰度传递。因此,首先,选择一个频道:

net_->input_blobs()[0]->Reshape(1, 1, height, width);

更改频道数量有什么影响?我的所有图层如何反应?能行吗如果可行,单通道网络会更快吗?

第二,选择四个图像:

net_->input_blobs()[0]->Reshape(4, 3, height, width);

我觉得这种方法行不通,应该考虑增加input_blobs的数量,但是该怎么做呢?还是正确的方法是什么?

1 个答案:

答案 0 :(得分:3)

  1. 使用单个通道而不是相同的三个通道应该更快(乘法加法运算更少)。由于这是在最佳规模上完成的,因此甚至可能对运行时间产生明显影响。

  2. 将4张图像作为一个批次进给通常比将一个图像分别处理为一个图像要快得多(由于内部优化了处理批次的计算)。

最重要的是:您应该获得更好的运行时间,以单批运行四个图像。如果输入是三个相同的通道-最好将模型修改为仅使用一个通道。