Разница между .pb и .h5 - PullRequest
1 голос
/ 29 мая 2020

В чем основное различие между форматом. pb тензорного потока и .h5 форматом keras для хранения моделей? Есть ли причина выбирать одно из них?

1 Ответ

2 голосов
/ 29 мая 2020

Различные форматы файлов с разными характеристиками, оба используются tensorflow для сохранения моделей (.h5 в частности keras).

.pb - protobuf

Это способ хранения некоторых структурированных данных (в данном случае нейронной сети), проект с открытым исходным кодом и в настоящее время просматривается Google.

Пример

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

Простой class, содержащий два поля, вы можете загрузить его на одном из нескольких поддерживаемых языков (например, C++, Go), проанализировать, изменить и отправить кому-то другому в двоичном формате.

Преимущества

  • очень маленький и эффективный для анализа (по сравнению, скажем, .xml), поэтому часто используется для передачи данных через Интернет
  • используется Tensorflow's Serving , когда вы хотите запустить свою модель в производство (например, вывод через Интернет)
  • агностика языка c - двоичный формат может быть прочитан на нескольких языках (Java, Python, Objective- C и C ++ среди других)
  • рекомендуется использовать с tf2.0, вы можете увидеть официальное руководство по сериализации
  • сохраняет различные метаданные (оптимизаторы, потери и т. Д. c. При использовании модели keras)

Недостатки

  • SavedModel концептуально сложнее asp чем один файл
  • создает папку, где weights - это

Кислый ces

Вы можете прочитать об этом формате здесь

.h5 - Формат двоичных данных HDF5

Первоначально использовался keras для сохранения моделей ( keras теперь официально является частью tensorflow). Это менее общий и более «ориентированный на данные», менее программный c, чем .pb.

Преимущества

  • Используется для сохранения гигантских данных (поэтому некоторые нейронные сети подходят well)
  • Общий формат сохранения файла
  • Все сохраняется в одном файле (веса, потери, оптимизаторы, используемые с keras et c.)

Недостатки

  • Нельзя использовать с Tensorflow Serving, но вы можете просто преобразовать его в .pb с помощью keras.experimental.export_saved_model(model, 'path_to_saved_model')

Всего

Используйте более простой (.h5), если вам не нужно производить вашу модель (или это достаточно далеко). Используйте .pb, если вы собираетесь в производство или просто хотите стандартизировать единый формат для всех tensorflow предоставленных инструментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...