测试时的 Caffe 错误:检查失败:count_ == proto.data_size() (9408 对 0)
Caffe error while testing: Check failed: count_ == proto.data_size() (9408 vs. 0)
我已经在 Caffe 上训练了一个 googlenet,现在我想做测试,所以我使用 deploy.prototxt 和预训练的权重并将它们分配给 Net。但是我收到这个错误(有趣的是在一条消息说网络已初始化之后)
I0927 17:51:41.171922 5336 net.cpp:255] Network initialization done.
I0927 17:51:41.195708 5336 net.cpp:744] Ignoring source layer label_imgdata_1_split
F0927 17:51:41.195746 5336 blob.cpp:496] Check failed: count_ == proto.data_size() (9408 vs. 0)
由于此处的字符限制,显然我无法复制粘贴整个原型文本。我添加的是没有 body 的样子,它或多或少是相同的(阶段:TRAIN 和 phase:TEST 部分除外)。 body 与此处的示例相同:https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet
一个注意事项:我在训练期间读入了 hdf5 数据,在测试期间我只使用了一个 python 脚本(我执行与创建 hdf5 数据时相同的预处理 / 所以我不使用 caffe 的io.transform 而且我根本不减去均值(这样效果更好))-尽管错误是在初始化期间而不是在数据部分读取
我的部署是什么样的:
name: "GoogleNet"
layer {
name: "data"
type: "Input"
top: "data"
input_param { shape: { dim: 10 dim: 3 dim: 224 dim: 224 } }
}
.....
layer {
name: "loss3/classifier"
type: "InnerProduct"
bottom: "pool5/7x7_s1"
top: "loss3/classifier"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 7
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prob"
type: "Softmax"
bottom: "loss3/classifier"
top: "prob"
}
这是我的火车原型文本的样子:
name: "GoogleNet"
layer {
name: "imgdata"
type: "HDF5Data"
top: "label"
hdf5_data_param {
source: "/media/DATA/DetDataWOMeanSubt/train_h5_list.txt"
batch_size: 64
shuffle: true
}
include {
phase: TRAIN
}
}
layer {
name: "imgdata"
type: "HDF5Data"
top: "imgdata"
top: "label"
hdf5_data_param {
source: "/media/DATA/DetDataWOMeanSubt/eval_h5_list.txt"
batch_size: 128
shuffle: true
}
include {
phase: TEST
}
}
....
layer {
name: "loss3/classifier"
type: "InnerProduct"
bottom: "pool5/7x7_s1"
top: "loss3/classifier"
inner_product_param {
num_output: 7
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "loss3/classifier"
bottom: "label"
top: "loss"
loss_weight: 1
}
layer {
name: "accuracy/top-1"
type: "Accuracy"
include { phase: TEST }
bottom: "loss3/classifier"
bottom: "label"
top: "accuracy/top-1"
accuracy_param { top_k: 1 }
}
这是我初始化网络的方式:
net = caffe.Net(model_def, # defines the structure of the model
model_weights, # contains the trained weights
caffe.TEST) # use test mode (e.g., don't perform dropout)
我确实在网络初始化之前收到了这个警告(它似乎仍在继续初始化网络)
DEPRECATION WARNING - deprecated use of Python interface
W0927 17:51:40.486548 5336 _caffe.cpp:140] Use this instead (with the named "weights" parameter):
W0927 17:51:40.486551 5336 _caffe.cpp:142] Net('/home/x/Desktop/caffe-caffe-0.16/models/bvlc_googlenet/deploy.prototxt', 1, weights='/home/x/Desktop/caffe-caffe-0.16/models/bvlc_googlenet/logs_iter_60000.caffemodel')
(但是当我按照建议去做时它不起作用)
我在使用Caffe之前做了很多次测试,我不知道为什么这不起作用。
如果有人想知道,事实证明我已经用不同版本的 caffe 训练了模型,并试图用另一个版本进行测试。我的计算机上安装了两个版本,似乎我只是在测试期间使用 python 脚本(为了训练我直接引用并使用了构建中的 caffe 工具)在 LD_LIBRARY_PATH.版本之间的差异不是太大,但在阅读 prototoxt 时似乎存在不匹配。
我已经在 Caffe 上训练了一个 googlenet,现在我想做测试,所以我使用 deploy.prototxt 和预训练的权重并将它们分配给 Net。但是我收到这个错误(有趣的是在一条消息说网络已初始化之后)
I0927 17:51:41.171922 5336 net.cpp:255] Network initialization done.
I0927 17:51:41.195708 5336 net.cpp:744] Ignoring source layer label_imgdata_1_split
F0927 17:51:41.195746 5336 blob.cpp:496] Check failed: count_ == proto.data_size() (9408 vs. 0)
由于此处的字符限制,显然我无法复制粘贴整个原型文本。我添加的是没有 body 的样子,它或多或少是相同的(阶段:TRAIN 和 phase:TEST 部分除外)。 body 与此处的示例相同:https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet
一个注意事项:我在训练期间读入了 hdf5 数据,在测试期间我只使用了一个 python 脚本(我执行与创建 hdf5 数据时相同的预处理 / 所以我不使用 caffe 的io.transform 而且我根本不减去均值(这样效果更好))-尽管错误是在初始化期间而不是在数据部分读取
我的部署是什么样的:
name: "GoogleNet"
layer {
name: "data"
type: "Input"
top: "data"
input_param { shape: { dim: 10 dim: 3 dim: 224 dim: 224 } }
}
.....
layer {
name: "loss3/classifier"
type: "InnerProduct"
bottom: "pool5/7x7_s1"
top: "loss3/classifier"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 7
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prob"
type: "Softmax"
bottom: "loss3/classifier"
top: "prob"
}
这是我的火车原型文本的样子:
name: "GoogleNet"
layer {
name: "imgdata"
type: "HDF5Data"
top: "label"
hdf5_data_param {
source: "/media/DATA/DetDataWOMeanSubt/train_h5_list.txt"
batch_size: 64
shuffle: true
}
include {
phase: TRAIN
}
}
layer {
name: "imgdata"
type: "HDF5Data"
top: "imgdata"
top: "label"
hdf5_data_param {
source: "/media/DATA/DetDataWOMeanSubt/eval_h5_list.txt"
batch_size: 128
shuffle: true
}
include {
phase: TEST
}
}
....
layer {
name: "loss3/classifier"
type: "InnerProduct"
bottom: "pool5/7x7_s1"
top: "loss3/classifier"
inner_product_param {
num_output: 7
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "loss3/classifier"
bottom: "label"
top: "loss"
loss_weight: 1
}
layer {
name: "accuracy/top-1"
type: "Accuracy"
include { phase: TEST }
bottom: "loss3/classifier"
bottom: "label"
top: "accuracy/top-1"
accuracy_param { top_k: 1 }
}
这是我初始化网络的方式:
net = caffe.Net(model_def, # defines the structure of the model
model_weights, # contains the trained weights
caffe.TEST) # use test mode (e.g., don't perform dropout)
我确实在网络初始化之前收到了这个警告(它似乎仍在继续初始化网络)
DEPRECATION WARNING - deprecated use of Python interface
W0927 17:51:40.486548 5336 _caffe.cpp:140] Use this instead (with the named "weights" parameter):
W0927 17:51:40.486551 5336 _caffe.cpp:142] Net('/home/x/Desktop/caffe-caffe-0.16/models/bvlc_googlenet/deploy.prototxt', 1, weights='/home/x/Desktop/caffe-caffe-0.16/models/bvlc_googlenet/logs_iter_60000.caffemodel')
(但是当我按照建议去做时它不起作用)
我在使用Caffe之前做了很多次测试,我不知道为什么这不起作用。
如果有人想知道,事实证明我已经用不同版本的 caffe 训练了模型,并试图用另一个版本进行测试。我的计算机上安装了两个版本,似乎我只是在测试期间使用 python 脚本(为了训练我直接引用并使用了构建中的 caffe 工具)在 LD_LIBRARY_PATH.版本之间的差异不是太大,但在阅读 prototoxt 时似乎存在不匹配。