本文共 1048 字,大约阅读时间需要 3 分钟。
code:https://github.com/OAID/Tengine
version: 88b4b7a2 图片,代码都来自以上项目。
Tengine的模型表达(序列化+反序列化)都是自己定义的,优点是:不会有其他依赖,缺点是:刚开始接触会很头疼,你要通过代码去看详细的规则。
其次,Tengine有别于ncnn(是将参数和数据分开的param+bin),Tengine是将参数和数据都写入到二进制文件。所以在解析的时候需要定义相应的数据结构才能解析。
同时,有别于mnn,用protobuffer做模型管理。所以Tengine的模型代码这块简单看一下就行
static struct tm2_serializer tm2_serializer
变量static struct tm2_serializer tm2_serializer = { .base = { .get_name = get_name, .load_model = load_model, .load_mem = load_mem, .unload_graph = unload_graph, .register_op_loader = register_op_loader, .unregister_op_loader = unregister_op_loader, .init = init_tm2_serializer, .release = release_tm2_serializer, }, .loader_list = NULL,};
将tm2_serializer
写入到internal_serializer_registry
进行统一管理,其实也可以不用写入到internal_serializer_registry
将不同op的op_loader
注册到tm2_serializer
的loader_list
转载地址:http://buhws.baihongyu.com/