繁体   English   中英

[Caffe]:检查失败:ShapeEquals(proto)形状不匹配(未设置重塑)

[英][Caffe]: Check failed: ShapeEquals(proto) shape mismatch (reshape not set)

我遇到此错误,尝试在Internet上查看,但不清楚。

我用Caffe成功地训练了我的网,准确率达到了82%。

现在,我尝试通过以下代码对图像进行尝试:

python python/classify.py --model_def examples/imagenet/imagenet_deploy.prototxt --pretrained_model caffe_mycaffe_train_iter_10000.caffemodel --images_dim 64,64 data/mycaffe/testingset/cat1/113.png foo --mean_file data/mycaffe/mycaffe_train_mean.binaryproto

是的,我的图片是64x64,

这些是我得到的最后几行:

I0610 15:33:44.868100 28657 net.cpp:194] conv3不需要向后计算。 I0610 15:33:44.868110 28657 net.cpp:194] norm2不需要向后计算。 I0610 15:33:44.868120 28657 net.cpp:194] pool2不需要向后计算。 I0610 15:33:44.868130 28657 net.cpp:194] relu2不需要向后计算。 I0610 15:33:44.868142 28657 net.cpp:194] conv2不需要向后计算。 I0610 15:33:44.868152 28657 net.cpp:194] norm1不需要向后计算。 I0610 15:33:44.868162 28657 net.cpp:194] pool1不需要向后计算。 I0610 15:33:44.868173 28657 net.cpp:194] relu1不需要向后计算。 I0610 15:33:44.868182 28657 net.cpp:194] conv1不需要向后计算。 I0610 15:33:44.868192 28657 net.cpp:235]该网络产生输出fc8_pascal I0610 15:33:44.868214 28657 net.cpp:482]收集学习速率和体重衰减。 I0610 15:33:44.868238 28657 net.cpp:247]网络初始化完成。 I0610 15:33:44.868249 28657 net.cpp:248]数据所需的内存:3136120 F0610 15:33:45.025965 28657 blob.cpp:458]检查失败:ShapeEquals(proto)形状不匹配(未设置重塑) *检查失败堆栈跟踪:*中止(核心已转储)

我试图不设置--mean_file和更多的东西,但是我的镜头结束了。

这是我的imagenet_deploy.prototxt,已在某些参数中对其进行了修改以进行调试,但没有任何效果。

name: "MyCaffe"
input: "data"
input_dim: 10
input_dim: 3
input_dim: 64
input_dim: 64
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  convolution_param {
    num_output: 64
    kernel_size: 11
    stride: 4
  }
}
layer {
  name: "relu1"
  type: "ReLU"
  bottom: "conv1"
  top: "conv1"
}
layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm1"
  type: "LRN"
  bottom: "pool1"
  top: "norm1"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv2"
  type: "Convolution"
  bottom: "norm1"
  top: "conv2"
  convolution_param {
    num_output: 64 
    pad: 2
    kernel_size: 5
    group: 2
  }
}
layer {
  name: "relu2"
  type: "ReLU"
  bottom: "conv2"
  top: "conv2"
}
layer {
  name: "pool2"
  type: "Pooling"
  bottom: "conv2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm2"
  type: "LRN"
  bottom: "pool2"
  top: "norm2"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv3"
  type: "Convolution"
  bottom: "norm2"
  top: "conv3"
  convolution_param {
    num_output: 384
    pad: 1
    kernel_size: 3
  }
}
layer {
  name: "relu3"
  type: "ReLU"
  bottom: "conv3"
  top: "conv3"
}
layer {
  name: "conv4"
  type: "Convolution"
  bottom: "conv3"
  top: "conv4"
  convolution_param {
    num_output: 384
    pad: 1
    kernel_size: 3
    group: 2
  }
}
layer {
  name: "relu4"
  type: "ReLU"
  bottom: "conv4"
  top: "conv4"
}
layer {
  name: "conv5"
  type: "Convolution"
  bottom: "conv4"
  top: "conv5"
  convolution_param {
    num_output: 64
    pad: 1
    kernel_size: 3
    group: 2
  }
}
layer {
  name: "relu5"
  type: "ReLU"
  bottom: "conv5"
  top: "conv5"
}
layer {
  name: "pool5"
  type: "Pooling"
  bottom: "conv5"
  top: "pool5"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "fc6"
  type: "InnerProduct"
  bottom: "pool5"
  top: "fc6"
  inner_product_param {
    num_output: 4096
  }
}
layer {
  name: "relu6"
  type: "ReLU"
  bottom: "fc6"
  top: "fc6"
}
layer {
  name: "drop6"
  type: "Dropout"
  bottom: "fc6"
  top: "fc6"
  dropout_param {
    dropout_ratio: 0.5
  }
}
layer {
  name: "fc7"
  type: "InnerProduct"
  bottom: "fc6"
  top: "fc7"
  inner_product_param {
    num_output: 4096
  }
}
layer {
  name: "relu7"
  type: "ReLU"
  bottom: "fc7"
  top: "fc7"
}
layer {
  name: "drop7"
  type: "Dropout"
  bottom: "fc7"
  top: "fc7"
  dropout_param {
    dropout_ratio: 0.5
  }
}
layer {
  name: "fc8_pascal"
  type: "InnerProduct"
  bottom: "fc7"
  top: "fc8_pascal"
  inner_product_param {
    num_output: 3
  }
}

有人可以给我一个线索吗? 非常感谢你。


对于C ++和它们提供的分类容器,也会发生相同的情况:

F0610 18:06:14.975601 7906 blob.cpp:455]检查失败:ShapeEquals(proto)形状不匹配(未设置重塑) *检查失败堆栈跟踪:* @ 0x7f0e3c50761c google :: LogMessage :: Fail()@ 0x7f0e3c507568 google :: LogMessage :: SendToLog()@ 0x7f0e3c506f6a google :: LogMessage :: Flush()@ 0x7f0e3c509f01 google :: LogMessageFatal :: ~~ LogMessageFatal()@ 0x7f0e3c964a80 caffe :: Blob <> :: FromProto()@c:c:c:0Net:c:Proto(0)3e:c:ProPro(0 @ e) :: CopyTrainedLayersFrom()@ 0x7f0e3c8a10d2 caffe :: Net <> :: CopyTrainedLayersFrom()@ 0x406c32分类器:: Classifier()@ 0x403d2b main @ 0x7f0e3b124ec5(未知)@ 0x4041ce(未知)已中止(核心)中止

我只是有同样的错误。 在我的情况下,我最后一层的输出参数不正确:切换数据集,更改了train.prototxt中的类数,但在test.prototxt(或deploy.prototxt)中没有这样做。 更正此错误为我解决了问题。

让我确认基本步骤是否正确。

input_dim: 10
input_dim: 3
input_dim: 64
input_dim: 64

您是否尝试过将第一个参数更改为1,因为您仅传递单个图像。

当顶部或底部斑点的尺寸不正确时,会发生上述错误。 除了输入斑点外,没有其他地方可能出问题。

编辑2:

fromproto函数调用的 'reshape'参数设置为false时,会出现ShapeEquals(proto) shape mismatch (reshape not set)错误消息。

我做了库中的fromproto函数调用进行快速搜索,如图这里 除了'CopyTrainedLayersFrom'函数外,没有其他函数实际将上述参数设置为false

这实际上是令人困惑的。 我建议使用两种方法:

  1. 检查caffe源代码是否已从存储库中更新。
  2. 尝试运行/ build / tools /中的caffe.bin可执行文件的测试部分。

就我而言,求解器文件中第二个卷积层中的内核大小与训练文件中的内核大小不同。 更改求解器文件的大小可以解决该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM