python - learning - caffe vs tensorflow
Extraer pesas de.caffemodel sin caffe instalado en Python (3)
Hoy en día, caffe puede guardar los pesos en dos formatos: BINARYPROTO o HDF5. Los archivos de pesos binarios con extensión .caffemodel
están en formato BINARYPROTO, mientras que la extensión .caffemodel.h5
está en formato HDF5. Dado que el formato HDF5 se introdujo recientemente en caffe, espero que la mayoría de los modelos que encuentre actualmente en el "zoológico modelo" estén en el formato BINARYPROTO más "tradicional".
Si los pesos están almacenados en formato HDF5, es posible que pueda h5py
usando el paquete h5py
.
Sin embargo, el formato BINARYPROTO se basa en una serialización binaria del formato de búfer de protocolo de Google que define caffe.proto
. No soy un experto en búferes de protocolo, pero sospecho que tendrá dificultades para descifrar el archivo binario sin "compilar" explícitamente los archivos de definición de caffe.proto
protobuf (que es parte de la compilación de caffe).
Supongo que la manera más fácil de elegir los pesos es instalando caffe y usando su interfaz python / C ++. ¿Por qué no haces eso?
¿Hay una manera relativamente simple de extraer pesos en Python de uno de los muchos modelos pre-entrenados en Caffe Zoo SIN CAFFE (ni pyCaffe)? es decir, analizar .caffemodel
a hdf5 / numpy o el formato que Python pueda leer?
Todas las respuestas que encontré usan código C ++ con clases de caffe o Pycaffe. He visto el código de pycaffe, parece que realmente necesitas café para darle sentido al binario, ¿es esa la única solución?
No entiendo por qué quieres hacer eso sin caffe / pycaffe, quizás estás cansado de implementar caffe en una nueva máquina. Pero dado que caffemodel es un tipo especial de datos binarios de caffe, usar la herramienta de otros no hace la vida más fácil.
Si insiste en hacer esto, hay otro marco: Mocha on Julia , que proporciona un método para extraer caffemodel a hdf5. Espero que esto pueda ayudarte.
Como ocurre, Ethereon creó una biblioteca maravillosa para convertir los modelos de caffe al código de tensorflow, ¡pero eso no es todo!
¡También permite al usuario convertir .caffemodel a .npy sin tener que construir pycaffe!
¡Prueba si el caffe fue construido y si no regresa a una implementación pura de Google protobuf!
¡¡Camino a ir a Ethereon !!!
el enlace .