Matlab运行bsxfun报错:输入数组非单例维度不匹配求助
解决MatConvNet中bsxfun维度不匹配报错
问题核心是两个输入的维度不兼容:
- 你的
im_是227×227×3的三维数组(高度×宽度×通道数) net.meta.normalization.averageImage是3×1的列向量(通道数×1)
bsxfun要求非单例维度必须完全匹配,当前两者的维度无法进行广播运算,因此抛出错误。
修复方案
将averageImage的维度调整为1×1×3,使其与im_的通道维度对齐,即可完成逐通道减均值操作:
% 调整均值向量维度为1×1×3 mean_image = reshape(net.meta.normalization.averageImage, 1, 1, 3); % 执行减均值操作(新版MATLAB可直接用im_ = im_ - mean_image,无需bsxfun) im_ = bsxfun(@minus, im_, mean_image);
补充说明
官方示例中averageImage的维度应为1×1×3,可能是你加载的AlexNet模型在归一化参数存储格式上有差异,通过reshape调整维度即可兼容示例代码逻辑。
内容的提问来源于stack exchange,提问作者Kadaj13
相关产品推荐
相关产品推荐

