Как просмотреть информацию о модели в формате tensorflow SavedModel

искусственный интеллект TensorFlow Python Командная строка

существует"Сохранение и загрузка моделей Tensorflow SavedModel«В статье мы говорили о преимуществах формата SavedModel, который не зависит от языка, прост в развертывании и загрузке. Вопрос в том, если кто-то публикует модель SavedModel, как мы понимаем эту модель, как мы загружаем и используем эту модель?

Идеальным состоянием для издателей моделей является написание хорошо документированного примера кода. Но во многих случаях мы просто получаем обученную модель без полной документации.Можем ли мы получить какую-то информацию из самой модели в это время? Такие как ввод и вывод модели, структура модели и так далее.

Ответ положительный.

Посмотреть подпись модели

Подпись здесь не является электронной подписью, чтобы гарантировать, что модель не будет изменена. Мое понимание похоже на ввод и вывод информации модулей в языках программирования, таких как имена функций, типы входных параметров, типы выходных параметров и так далее. Мы используем "Сохранение и загрузка моделей Tensorflow SavedModel"в коде в качестве примера из утверждения:

signature = predict_signature_def(inputs={'myInput': x},
                                  outputs={'myOutput': y})

Мы видим, что вход модели называется myInput, а выход — myOutput. Что делать, если у нас нет исходного кода?

Tensorflow предоставляет инструмент Если вы загрузите исходный код Tensorflow, вы можете найти такой файл, ./tensorflow/python/tools/saved_model_cli.py, вы можете добавить параметр -h для просмотра справочной информации скрипта:

usage: saved_model_cli.py [-h] [-v] {show,run,scan} ...

saved_model_cli: Command-line interface for SavedModel

optional arguments:
  -h, --help       show this help message and exit
  -v, --version    show program's version number and exit

commands:
  valid commands

  {show,run,scan}  additional help

Указав расположение модели SavedModel, мы можем отобразить информацию о модели SavedModel:

python $TENSORFLOW_DIR/tensorflow/python/tools/saved_model_cli.py show --dir ./model/ --all

Результат:

MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:

signature_def['predict']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['myInput'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 784)
        name: myInput:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['myOutput'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 10)
        name: Softmax:0
  Method name is: tensorflow/serving/predict

Отсюда мы можем ясно видеть имя ввода/вывода, тип данных, форму и имя метода модели. С этой информацией мы можем легко написать методы вывода.

Просмотр вычислительного графа модели

Люди, знакомые с tensflow, могут знать, что TensorBoard — очень мощный инструмент, который может отображать большое количество информации о модели, включая вычислительные графики. Проблема в том, что TensorBoard нужен лог обучения модели, а что, если модель SavedModel обучал кто-то другой? Нет возможности, мы можем написать кусок кода, загрузить модель, а затем вывести сводную информацию, код выглядит следующим образом:

import tensorflow as tf
import sys
from tensorflow.python.platform import gfile

from tensorflow.core.protobuf import saved_model_pb2
from tensorflow.python.util import compat

with tf.Session() as sess:
  model_filename ='./model/saved_model.pb'
  with gfile.FastGFile(model_filename, 'rb') as f:

    data = compat.as_bytes(f.read())
    sm = saved_model_pb2.SavedModel()
    sm.ParseFromString(data)

    if 1 != len(sm.meta_graphs):
      print('More than one graph found. Not sure which to write')
      sys.exit(1)

    g_in = tf.import_graph_def(sm.meta_graphs[0].graph_def)
LOGDIR='./logdir'
train_writer = tf.summary.FileWriter(LOGDIR)
train_writer.add_graph(sess.graph)
train_writer.flush()
train_writer.close()

В коде сводная информация выводится в logdir, затем запускается TensorBoard и добавляется указанный выше logdir:

tensorboard --logdir ./logdir

Введите адрес в браузере:http://127.0.0.1:6006/, вы можете увидеть следующую схему расчета:

резюме

Согласно первым двум методам мы можем получить более полное представление о модели в формате Tensorflow SavedModel, даже если тренер модели не предоставляет документацию. Я считаю, что с этой информацией о модели вам будет легче писать выводы, используя модель.

Полный код этой статьи см. по адресу:GitHub.com/mogo Web/голодание…

Надеюсь, эта статья была вам полезна, спасибо за прочтение!

image