Как избежать 64-битных типов данных для запуска моей модели Python Estimator изначально на узле tf js? - PullRequest
0 голосов
/ 13 февраля 2020

Я создал модель tf.estimator и конвейер tf.data в Python и сохранил ее в формате tf.saved_model в TF 2.1. Так как tf js -node не поддерживает типы int64 или float64, он не может загрузить модель.

На Tensorboard я заметил, что некоторые входные конвейерные переменные Python автоматически объявляются как 64-битные типы.

enter image description here

Например, batch_size и epochs выше. Как я могу избежать этой проблемы и загрузить tf.estimator модель в узел tf js без преобразования?

Чтобы воспроизвести,

1 Ответ

1 голос
/ 26 марта 2020

Поскольку INT64 и FLOAT64 не поддерживаются в узле tf js, модель не может быть загружена и исполнена напрямую, если тензор типа ввода / вывода имеет тип INT64 / FLOAT64. один из обходных путей - обернуть модель с помощью функции приведения к тензору:

  1. в python, загрузить исходную модель и создать новую модель с входным тензором INT32 или FLOAT32
  2. в новой модели преобразовать входной тензор в DTYPE INT64 / FLOAT64
  3. передать преобразованный тензор в исходную модель и вернуть выходные данные модели (при необходимости преобразовать значение dtype)
  4. экспортировать этот новый модель как TF SavedModel

, поэтому с этим переносом типы ввода / вывода модели поддерживаются в узле tf js, хотя он может потерять некоторую точность.

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