Neural network 如何将经过训练的h5格式caffe模型加载到c++;咖啡网?

Neural network 如何将经过训练的h5格式caffe模型加载到c++;咖啡网?,neural-network,protocol-buffers,deep-learning,caffe,hdf5,Neural Network,Protocol Buffers,Deep Learning,Caffe,Hdf5,正常训练的caffe模型是.caffemodel扩展,实际上是二进制protobuf格式 在C++中,如何将一个CAFE模型加载到代码中? 我有一个用python caffe以hdf5格式训练的模型 我知道caffe里面有HDF5数据层。 有没有关于这个的示例程序 编辑: 我使用了CopyTrainedLayersFromHDF5()api,并得到以下运行时错误 HDF5-DIAG: Error detected in HDF5 (1.8.11) thread 140737353775552:

正常训练的caffe模型是
.caffemodel
扩展,实际上是
二进制protobuf
格式

在C++中,如何将一个CAFE模型加载到代码中? 我有一个用python caffe以
hdf5
格式训练的模型

<我的应用程序是用C++的C++版本,我更喜欢用C++来代替Python。 如何将HDF5格式的CAFE训练模型读入C++ CopeNet?< /P> 我知道caffe里面有HDF5数据层。 有没有关于这个的示例程序

编辑:

我使用了CopyTrainedLayersFromHDF5()api,并得到以下运行时错误

HDF5-DIAG: Error detected in HDF5 (1.8.11) thread 140737353775552:
  #000: ../../../src/H5G.c line 463 in H5Gopen2(): unable to open group
    major: Symbol table
    minor: Can't open object
  #001: ../../../src/H5Gint.c line 320 in H5G__open_name(): group not found
    major: Symbol table
    minor: Object not found
  #002: ../../../src/H5Gloc.c line 430 in H5G_loc_find(): can't find object
    major: Symbol table
    minor: Object not found
  #003: ../../../src/H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed
    major: Symbol table
    minor: Object not found
  #004: ../../../src/H5Gtraverse.c line 641 in H5G_traverse_real(): traversal operator failed
    major: Symbol table
    minor: Callback failed
  #005: ../../../src/H5Gloc.c line 385 in H5G_loc_find_cb(): object 'data' doesn't exist
    major: Symbol table
    minor: Object not found
F0220 15:32:14.272573 24576 net.cpp:811] Check failed: data_hid >= 0 (-1 vs. 0) Error reading weights from model_800000.h5
*** Check failure stack trace: ***
    @     0x7ffff64afdcd  google::LogMessage::Fail()
    @     0x7ffff64b1d08  google::LogMessage::SendToLog()
    @     0x7ffff64af963  google::LogMessage::Flush()
    @     0x7ffff64b263e  google::LogMessageFatal::~LogMessageFatal()
    @     0x7ffff691c3a3  caffe::Net<>::CopyTrainedLayersFromHDF5()
    @           0x40828d  ExtractFeature::ExtractFeature()
    @           0x40ce78  main
    @     0x7ffff5bf8f45  __libc_start_main
    @           0x4080c9  (unknown)

Program received signal SIGABRT, Aborted.
0x00007ffff5c0dc37 in __GI_raise (sig=sig@entry=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56  ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) cd 
[17]+  Stopped                 gdb ./endtoendlib

您是否考虑过
net
对象方法?它似乎能满足你的需求


至于
“HDF5Data”
层:您在这里混淆了两件事。您拥有的hdf5文件存储网络的训练参数。相反,
“HDF5Data”
层存储用于训练网络的训练示例

是的,我检查了.h5文件,它是二进制格式的。但是二进制格式正确吗?如果您
h5ls型号_80000.h5
您会得到什么?似乎caffe希望该文件有一个不存在的
'data'
数据集…h5ls命令给出的结果与EDIT1中的一样。我看到数据集了。您是如何保存这个
model_80000.h5
文件的?是咖啡馆救的吗?caffe
net.ToHDF5(…)
将权重保存到hdf5文件中的方法将参数保存到
数据(以及可选的
diff
)数据集中。您的文件没有此数据集。您可以尝试手动“调整”文件,并将
数据/
添加到文件中的所有数据集……是的,您的解决方案是正确的。我需要处理我的H5文件,以便它可以加载到C++咖啡。
>>h5ls model_800000.h5 command gave me

conv1                    Group
conv2                    Group
forget_gate              Dataset {1, 250, 1, 1274}
inception_3a             Group
inception_3b             Group
inception_4a             Group
inception_4b             Group
inception_4c             Group
inception_4d             Group
inception_4e             Group
inception_5a             Group
inception_5b             Group
input_gate               Dataset {1, 250, 1, 1274}
input_value              Dataset {1, 250, 1, 1274}
ip_bbox_unscaled0.p0     Dataset {4, 250}
ip_bbox_unscaled0.p1     Dataset {4}
ip_bbox_unscaled1.p0     Dataset {4, 250}
ip_bbox_unscaled1.p1     Dataset {4}
ip_bbox_unscaled2.p0     Dataset {4, 250}
ip_bbox_unscaled2.p1     Dataset {4}
ip_bbox_unscaled3.p0     Dataset {4, 250}
ip_bbox_unscaled3.p1     Dataset {4}
ip_bbox_unscaled4.p0     Dataset {4, 250}
ip_bbox_unscaled4.p1     Dataset {4}
ip_conf0.p0              Dataset {2, 250}
ip_conf0.p1              Dataset {2}
ip_conf1.p0              Dataset {2, 250}
ip_conf1.p1              Dataset {2}
ip_conf2.p0              Dataset {2, 250}
ip_conf2.p1              Dataset {2}
ip_conf3.p0              Dataset {2, 250}
ip_conf3.p1              Dataset {2}
ip_conf4.p0              Dataset {2, 250}
ip_conf4.p1              Dataset {2}
output_gate              Dataset {1, 250, 1, 1274}
post_fc7_conv.p0         Dataset {1024, 1024, 1, 1}
post_fc7_conv.p1         Dataset {1024}