keras .pb和.h5之间的差异

xxe27gdn  于 2022-12-13  发布在  其他
关注(0)|答案(2)|浏览(419)

tensorflow 的.pb格式和keras的**.h5**格式存储模型的主要区别是什么?有没有理由选择其中一种?

shyt4zoc

shyt4zoc1#

具有不同特性的不同文件格式,均由tensorflow用于保存模型(.h5具体由keras使用)。

.pb-协议缓冲区

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

示例

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

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

优势

  • 非常小,解析起来非常高效(与.xml相比),因此经常用于网络上的数据传输
  • Tensorflow's Serving在您希望将模型用于生产时使用(例如,通过Web进行推理)
  • 语言不可知-二进制格式可以被多种语言读取(Java、Python、Objective-C和C++等)
  • 建议自tf2.0起使用,您可以看到official serializing guide
  • 保存各种元数据(如果使用keras的模型,优化器,损失等)

缺点

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

来源

您可以阅读有关here的信息

.h5-HDF 5二进制数据格式#

最初由keras用来保存模型(keras现在正式成为tensorflow的一部分)。它不那么通用,更“面向数据”,比.pb少编程。

优势

  • 用于保存大量数据(以便某些神经网络能够很好地拟合)
  • 常用文件保存格式
  • 将所有内容保存在一个文件中(重量、损耗、与keras配合使用的优化器等)

缺点

  • 不能与Tensorflow Serving一起使用,但您可以通过keras.experimental.export_saved_model(model, 'path_to_saved_model')将其转换为.pb

总而言之

如果你不需要生产化你的模型(或者它离你很远),使用简单的一个(.h5)。如果你打算生产或者只是想在tensorflow提供的所有工具上标准化一种格式,使用.pb

efzxgjgh

efzxgjgh2#

.pb文件格式用于在Google的TensorFlow框架中存储模型。它是一种二进制文件格式,包含模型的权重沿着有关模型结构和操作的信息。.pb格式旨在快速高效,非常适合在速度和性能非常重要的生产环境中使用。
另一方面,.h5文件格式用于在Keras框架中存储模型。它是一种分层文件格式,允许以一种有组织且易于理解的方式存储模型。.h5格式通常用于开发和实验,因为它允许轻松地保存和加载模型,并提供了一种方便的方式来存储关于模型的附加元数据。
总的来说,.pb和.h5文件格式之间的主要区别在于它们所关联的框架。.pb格式用于TensorFlow,而.h5格式用于Keras。两种格式都有各自的优势和局限性,最佳选择取决于您的应用程序的特定需求。

相关问题