【问题标题】:shape mismatch while copy weights from own trained net in caffe在 caffe 中从自己训练的网络中复制权重时形状不匹配
【发布时间】:2016-11-18 12:51:37
【问题描述】:

当我尝试在 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 }}
}

错误:

无法从层“fc4”复制参数 0 权重;形状不匹配。源参数形状为 8 26912 (215296);目标参数形状为 8 32768 (262144)。

我找到了this 的答案,但我自己的模型已经过训练和测试。 你能解释一下吗?

【问题讨论】:

  • 我希望不匹配出现的时间早于 fc4。你能发布你的拓扑吗?
  • @Prune 如果fc4 之前的所有层都是"Convolution" 层,那么只有全连接层没有问题。
  • @Shai -- 正确。这就是我试图收集更多信息的原因。据报道,输入的大小相同。一系列 CONV 层不会产生错误。但是,不匹配的输入可能/应该触发第一个 CONV。
  • @Prune 输入的大小不同:在部署中缺少训练期间的裁剪。详情请看我的回答
  • 对,但是..哦...现在明白了。我在精神上将匹配的作物滑入部署中。呵呵。

标签: c++ machine-learning neural-network deep-learning caffe


【解决方案1】:

您正在使用不同大小的输入来喂您的网络:在训练期间,您将输入裁剪为 227x277,而在测试期间您不裁剪并将图像保留为 256x256。这会导致您遇到错误。

【讨论】:

  • 谢谢,我不明白输入层的crop_size 参数。 Official tutorial 说:随机裁剪可以作为简单的数据增强来完成。而且我认为这类似于随机裁剪和缩放,主要尺寸保持不变 (256)。
  • 1) 为什么需要new_heightnew_width 参数?
  • 2) 如果我在测试期间将 input_param shape 更改为 227,我会得到 网络应该只有一个输入 错误。是因为模型的新输入大小吗?
  • @esterlein 你不会错过标签输入吗?
  • 第一个问题现在很清楚了。 @Shai 不,完全部署输入定义为input_param { shape: { dim: 1 dim: 3 dim: 227 dim: 227 } shape: { dim: 1 dim: 1 }},带有两个顶部斑点。训练/测试输入定义为image_data_param { source: "/home/....txt" },有两个顶部。
猜你喜欢
  • 2017-09-07
  • 2016-03-31
  • 1970-01-01
  • 2016-07-27
  • 2016-11-24
  • 2016-09-28
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多