.pb和.h5之间的区别

时间:2020-05-29 05:29:12

标签: tensorflow keras

张量流的。 pb 格式和keras的 .h5 格式存储模型之间的主要区别是什么?有什么理由选择一个?

1 个答案:

答案 0 :(得分:3)

具有不同特征的不同文件格式,tensorflow都使用它们来保存模型(.h5特别是keras用于保存模型)。

.pb-protobuf

这是一种存储结构化数据(在这种情况下为神经网络)的方法,项目为open source,目前由Google概述。

示例

person {
  name: "John Doe"
  email: "jdoe@example.com"
}

包含两个字段的简单class,您可以用多种支​​持的语言(例如C++Go)将其加载,解析,修改并以二进制格式发送给其他人。

优势

  • 解析力极小且有效(与说.xml相比),因此通常用于网络上的数据传输
  • Tensorflow's Serving在要将模型投入生产(例如,通过网络进行推理)时使用
  • 不可知的语言-二进制格式可以由多种语言(Java,Python,Objective-C和C ++等)读取
  • tf2.0开始建议使用,您可以看到official serializing guide
  • 保存各种元数据(如果使用keras的模型,则可节省优化工具,损失等)

缺点

  • SavedModel在概念上比单个文件更难掌握
  • 创建weights所在的文件夹

来源

您可以阅读有关here这种格式的信息

.h5-HDF5二进制数据格式

keras最初用于保存模型(keras现在是tensorflow的正式组成部分)。与.pb相比,它不那么通用,更“面向数据”,程序设计也更少。

优势

  • 用于保存巨型数据(因此某些神经网络很适合)
  • 常用文件保存格式
  • 所有内容都保存在一个文件中(权重,损失,与keras一起使用的优化程序等)

缺点

  • 无法与Tensorflow Serving一起使用,但您可以通过.pb将该变量简单地转换为keras.experimental.export_saved_model(model, 'path_to_saved_model')

全部

如果不需要生产模型(或者距离合理很远),请使用较简单的模型(.h5。如果您要进行生产,或者只是想在所有.pb提供的工具中使用单一格式进行标准化,则使用tensorflow