作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将几个底部 Blob 合并为一个顶部 Blob ,然后将其馈送到下一层。
这些 Blob 来自不同的卷积/FC层,因此它们的形状不同。
我尝试了 concat 层,但使用轴 0 或 1 时,出现如下错误:
I1217 23:47:56.877848 9968 layer_factory.cpp:58] Creating layer concat_fuse2
I1217 23:47:56.878350 9968 net.cpp:100] Creating Layer concat_fuse2
I1217 23:47:56.878350 9968 net.cpp:434] concat_fuse2 <- relu4_relu4_0_split_1
I1217 23:47:56.878850 9968 net.cpp:434] concat_fuse2 <- relu5_relu5_0_split_1
I1217 23:47:56.879349 9968 net.cpp:434] concat_fuse2 <- relu6_relu6_0_split_0
I1217 23:47:56.879349 9968 net.cpp:408] concat_fuse2 -> fuse_4_6
F1217 23:47:56.879849 9968 concat_layer.cpp:42] Check failed: top_shape[j] == bottom[i]->shape(j) (32 vs. 16) All inputs must have the same shape, except at concat_axis.
*** Check failure stack trace: ***
我该怎么办?
最佳答案
Caffe 在错误消息中给出了失败的原因:
All inputs must have the same shape, except at concat_axis.
这样做的原因是,所有数据都存储在 Blobs 中,它们是N维数组。图像数据的典型 Blob 有四个维度:数量 N x channel K x 高度 H x 宽度 W。在 Blob 中,宽度、高度和 channel 数必须相同。这意味着,一批中的所有图像必须具有相同的 channel 数、宽度和高度。
Concat
用于沿轴 0(图像数量)或轴 1( channel )连接。这意味着,您只能连接具有相同高度和宽度的输入。
现在,我假设您在连接层之后仅使用 FC 层,因为我认为您无法通过这样的连接很好地保留空间信息。这意味着,对于网络来说,输入是 H x W 图像还是 1 x HW 向量并没有什么区别。
因此,您可以使用 Reshape
层来堆叠 K 维度(即 channel 数)中的所有信息。因此,我们从尺寸 N x K x H x W 变为尺寸 N x KHW x 1 x 1。对所有输入 Blob 执行此操作后,您可以轻松地沿轴 1 使用 Concat
。
关于caffe - 如何在 Caffe 中合并多个不同形状的 Blob ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41202679/
我是一名优秀的程序员,十分优秀!