logo好方法网

神经网络模型存储方法、加载方法、装置、设备及存储介质


技术摘要:
本申请公开了一种神经网络模型存储方法、加载方法、装置、设备及存储介质,该存储方法包括:获取神经网络模型的源模型文件;对源模型文件中的数据进行解析,得到模型的内容数据;将模型的内容数据拼接成第一编程语言的对象内存块;将对象内存块打包成字节流内存块;将  全部
背景技术:
随着大数据和计算能力的大幅提升,深度学习技术推动了人工智能的进步。随着 人工智能场景和应用的丰富,终端智能设备成为人工智能的接入口。 现有技术中,深度学习框架中,对神经网络模型的存储时需要集成第三方库,例如 Protobuf方案中需要集成protobuf库,又例如Flatbuffers方案中需要集成flatbuffers 库。 现有对神经网络模型存储时需要集成第三方库,增大了对内存的需求。
技术实现要素:
鉴于现有技术中的上述缺陷或不足,期望提供一种神经网络模型存储方法、加载 方法、装置、设备及存储介质。 第一方面,本发明提供了一种神经网络模型存储方法,包括: 获取神经网络模型的源模型文件; 对源模型文件中的数据进行解析,得到模型的内容数据; 将模型的内容数据拼接成第一编程语言的对象内存块; 将对象内存块打包成字节流内存块; 将字节流内存块存储,得到目标模型文件。 在其中一个实施例中,将模型的内容数据拼接成第一编程语言的对象内存块,包 括: 将模型的内容数据依次填入内存结构中,拼接成第一编程语言的对象内存块; 其中,内存结构根据第一编程语言的对象在内存中的布局规则进行布局得到。 在其中一个实施例中,方法还包括: 获取目标操作系统的内存字节顺序; 将对象内存块打包成字节流内存块的步骤包括: 按照目标操作系统的内存字节顺序,将对象内存块打包成字节流内存块。 在其中一个实施例中,第一编程语言包括C语言、C 语言、汇编语言。 在其中一个实施例中,将模型的内容数据拼接成第一编程语言的对象内存块,通 过第二编程语言实现。 在其中一个实施例中,第一编程语言的对象内存块包括至少一个子对象内存块及 每个子对象内存块对应的指针,子对象内存块对应的指针指向子对象内存块的存储地址。 在其中一个实施例中,第一编程语言的对象内存块包括至少两个子对象内存块及 每个子对象内存块对应的指针,子对象内存块的顺序与子对象内存块对应的指针的顺序一 4 CN 111596972 A 说 明 书 2/8 页 致。 第二方面,本发明提供了一种神经网络模型加载方法,包括: 获取如上述存储方法得到的目标模型文件; 将目标模型文件以内存映射的方式,加载进内存,得到字节流内存块; 将字节流内存块通过类型转换的方式转换为对象内存块。 第三方面,本发明提供了一种神经网络模型存储装置,包括: 第一获取模块,用于获取神经网络模型的源模型文件; 解析模块,用于对源模型文件中的数据进行解析,得到模型的内容数据; 拼接模块,用于将模型的内容数据拼接成第一编程语言的对象内存块; 打包模块,用于将对象内存块打包成字节流内存块; 存储模块,用于将字节流内存块存储,得到目标模型文件。 在其中一个实施例中,拼接模块还用于: 将模型的内容数据依次填入内存结构中,拼接成第一编程语言的对象内存块; 其中,内存结构根据第一编程语言的对象在内存中的布局规则进行布局得到。 在其中一个实施例中,装置还包括:第二获取模块,用于获取目标操作系统的内存 字节顺序; 打包模块还用于:按照目标操作系统的内存字节顺序,将对象内存块打包成字节 流内存块。 在其中一个实施例中,第一编程语言包括C语言、C 语言、汇编语言。 在其中一个实施例中,将模型的内容数据拼接成第一编程语言的对象内存块,通 过第二编程语言实现。 在其中一个实施例中,第一编程语言的对象内存块包括至少一个子对象内存块及 每个子对象内存块对应的指针,子对象内存块对应的指针指向子对象内存块的存储地址。 在其中一个实施例中,第一编程语言的对象内存块包括至少两个子对象内存块及 每个子对象内存块对应的指针,子对象内存块的顺序与子对象内存块对应的指针的顺序一 致。 第四方面,本发明提供了一种神经网络模型加载装置,包括: 第三获取模块,用于获取上述任一存储装置中存储模块中存储得到的目标模型文 件; 加载模块,用于将目标模型文件以内存映射的方式,加载进内存,得到字节流内存 块; 转换模块,用于将字节流内存块通过类型转换的方式转换为对象内存块。 第五方面,本发明提供了一种设备,包括存储器、处理器及存储在存储器上并可在 处理器上运行的计算机程序,处理器执行程序时实现上述任一的存储方法及实现上述加载 方法。 第六方面,本发明提供了一种可读存储介质,其上存储有计算机程序,该程序被处 理器执行时实现上述任一的存储方法及实现上述加载方法。 本实施例所提供的神经网络模型存储方法、加载方法、装置、设备及存储介质,该 方法将解析神经网络模型的模型文件得到的模型的内容数据,拼接成第一编程语言的对象 5 CN 111596972 A 说 明 书 3/8 页 内存块,然后将对象内存块打包成字节流内存块并存储,得到目标模型文件,无需集成第三 方库,可以降低对内存的需求。 附图说明 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它 特征、目的和优点将会变得更明显: 图1为本发明的实施例提供的一种神经网络模型存储方法的流程示意图; 图2为C 对象名为NetDef的C 对象在内存中的布局示意图; 图3为本发明的实施例提供的一种神经网络模型加载方法的流程示意图; 图4为本发明实施例提供的神经网络模型存储装置的结构示意图; 图5为本发明实施例提供的神经网络模型加载装置的结构示意图; 图6为本发明的实施例提供的一种计算机设备的结构示意图。
分享到:
收藏