我正在使用 ConvNet 解决检测问题。但是在我的例子中,标签是每个图像的维度 [3 x 5]
的矩阵。我使用 Caffe 来完成这项工作。我使用 Datalayer
读取图像,同时使用 HDF5Layer
读取标签。
HDF5Layer 将 [3x5]
标签矩阵读取为 [1x15]
维 vector 。
因此,在计算 L2 损失之前,我使用了 Reshape Layer
将 vector reshape 为矩阵。但是我意识到 reshape 层将数据格式化为 H x W
而我的标签矩阵是 [W x H]
即 [w=3, h=5]
因此 reshape 是不正确的。我想知道有没有办法以正确的顺序 reshape [1x15]
标签 vector ,即 [3x5]
而不是 [5x3 ]
我认为我可以解决的另一种方法是将输出形式的卷积层展平为 [1 x 15],然后使用我的 [1 x 15] 标签计算损失。
由于我的英语不好,我使用图表来展示问题以便更好地理解。
Caffe Reshape 层结果
如果我做对了有什么建议吗?
最佳答案
计算损失的任何一种方法都可以。事实上,以 1x15 形状计算可以节省您转换的时间。损失计算仍然是逐个像素的;逻辑组织并不重要。
使用相同的想法,计算 3x5 还是 5x3 并不重要;重要的是你的卷积输出和你的标签正确匹配。
如果您希望显示(图形、图片等)匹配,也许您可以在绘制输出之前切换 x 和 y 指定。
关于python - Caffe 多标签矩阵输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40977530/