形状不匹配,同时从 caffe 中自己训练的网络复制权重
shape mismatch while copy weights from own trained net in caffe
当我尝试在 C++ 中加载经过训练的网络时,我在 FC 层上遇到形状不匹配错误。
我在 TRAIN/TEST 阶段的输入层(仅在源和批量大小方面有所不同,省略了一些参数):
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 }}
}
错误:
Cannot copy param 0 weights from layer 'fc4'; shape mismatch. Source param shape is 8 26912 (215296); target param shape is 8 32768 (262144).
我找到了 答案,但我自己的模型已经过训练和测试。
你能解释一下吗?
您正在为您的网络提供不同大小的输入:在训练期间,您正在 裁剪 输入到 227x277,而在测试期间,您不裁剪图像并将图像保留为 256x256。这会导致您遇到错误。
当我尝试在 C++ 中加载经过训练的网络时,我在 FC 层上遇到形状不匹配错误。 我在 TRAIN/TEST 阶段的输入层(仅在源和批量大小方面有所不同,省略了一些参数):
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 }}
}
错误:
Cannot copy param 0 weights from layer 'fc4'; shape mismatch. Source param shape is 8 26912 (215296); target param shape is 8 32768 (262144).
我找到了
您正在为您的网络提供不同大小的输入:在训练期间,您正在 裁剪 输入到 227x277,而在测试期间,您不裁剪图像并将图像保留为 256x256。这会导致您遇到错误。