learning neural-network protocol-buffers deep-learning caffe hdf5

neural network - learning - Cómo cargar el modelo de caffe entrenado en formato h5 a c++ caffe net?



caffe github (1)

El modelo de caffe normalmente entrenado está en extensión .caffemodel y en realidad están en formato binary protobuf .

¿Alguna idea de cómo cargar un modelo de caffe en formato hdf5 para caffe net en c ++?

Tengo un modelo capacitado con python caffe en formato hdf5 .

Mi aplicación está en c ++ usando la versión caffe c ++ y prefiero usar c ++ que python.

¿Cómo leer el modelo en modelo caffe entrenado en formato hdf5 a c ++ caffe net?

Sé que caffe tiene una capa de hdf5data adentro. ¿Hay algún programa de muestra para eso?

EDITAR:

Utilicé la API CopyTrainedLayersFromHDF5 () y obtuve los siguientes errores de tiempo de ejecución.

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

EDIT 1:

>>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}


¿Ha considerado el método de objeto net void CopyTrainedLayersFromHDF5(const string trained_filename); ? Parece que hace lo que estás buscando.

En cuanto a la capa "HDF5Data" : aquí confundes dos cosas. El archivo hdf5 que tiene almacena los parámetros entrenados de la red. Por el contrario, la capa "HDF5Data" almacena los ejemplos de entrenamiento utilizados para entrenar la red.