c++ - 将输入层重塑为单个通道和多个图像
问题描述
在我收集的一些参考代码中,有:
net_->input_blobs()[0]->Reshape(1, 3, height, width);
我的prototxt
有:
input_shape {
dim: 1
dim: 3
dim: 260
dim: 347
}
我已间接获悉,提供的模型已针对灰度进行了调整(我们同时具有 color 和 grayscale prototxt
),并且当前使用的 Python 代码使用具有三个相同通道的灰度输入。
现在我想在一次调用中同时处理或单独处理 4 个图像,net_->Forward();
并将这四个图像作为单通道灰度传递。因此,首先,选择单个频道:
net_->input_blobs()[0]->Reshape(1, 1, height, width);
改变频道数量有什么影响?我的所有图层如何反应?它会起作用吗?如果可行,单通道网络会更快吗?
二、选择四张图片:
net_->input_blobs()[0]->Reshape(4, 3, height, width);
我有一种行不通的感觉,我应该考虑增加 的数量input_blobs
,但是该怎么做呢?或者什么是正确的方法?
解决方案
使用单个通道而不是相同的三个通道应该更快(更少的乘法加法运算)。由于这是以最佳规模完成的,因此这甚至可能对运行时间产生显着影响。
将 4 张图像作为一个批次提供通常比将每个图像作为一个批次单独处理一个图像更快(由于计算的内部优化以处理批次)。
底线:您应该在运行单批四个图像时获得更好的运行时间。如果输入是三个相同的通道 - 最好将模型修改为仅使用一个。
推荐阅读
- r - 将列表中的网格化数据转换为数据框
- python - 如果包含在括号中,则替换列的字符串值
- javascript - 如何在 jQuery.get "Data" 中获取特定元素
- amazon-s3 - 有什么方法可以只同步 aws s3 存储桶中存在的文件而不是已删除的文件?
- r - R Shiny:如何在单击直方图中的条形时过滤数据表?
- mqtt - 新订阅时未使用 Mosquitto 的 QoS 1 消息
- react-native - react-native 自定义滑块,使用 `diffClamp`
- arrays - 更改数组中的字符串值以将 VueJS 中的每个单词大写
- java - Google Cloud Talent API - Java:库丢失或示例已过时?
- sql - RPAD 数值