当我尝试在C++中加载训练好的网络时,在全连接层(FC-layer)上遇到了形状不匹配的错误。我在训练/测试阶段的输入层(仅在数据源和批次大小上有所不同,其他一些参数被省略):
layer { type: "ImageData" image_data_param { batch_size: 8 new_height: 256 new_width: 256 } transform_param { crop_size: 227 }}
部署时的输入层:
layer { type: "Input" input_param { shape: { dim: 1 dim: 3 dim: 256 dim: 256 }}}
错误信息如下:
无法从层 ‘fc4’ 复制参数 0 的权重;形状不匹配。源参数形状为 8 26912 (215296);目标参数形状为 8 32768 (262144)。
我找到了这个回答,但我的模型是自己训练和测试的。你能对此提供一些解释吗?
回答:
你在向网络输入不同大小的数据:在训练过程中,你将输入裁剪到227×227,而在测试过程中,你没有裁剪,保持图像为256×256。这就是你遇到错误的原因。