Tensorflowjs: означает ли loadFrozenModel, что я не могу получить доступ к слоям? - PullRequest
0 голосов
/ 01 марта 2019

раньше загружал модель, вызывая tf.loadModel('https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_0.25_128/model.json'), однако мне нужно было изменить версию mobilinet.

Итак, я взял нужную версию с tennflowflowhub, запустил ее на tenorsflow_converter и получил два файла(.pb и файл веса).Затем я загрузил его, используя tf.loadGraphModel.hower, model.getLayer выдает:

model.getLayer не является функцией.

загрузка выглядит так:

const model = await tf.loadGraphModel(modelUrl); //url points to .pb

Тогда ясохранил модель mobilinet как замороженную модель, снова запустил ее на tenorflow_converter и попытался загрузить как tf.loadFrozenModel.который возвратил то же самое.

я в замешательстве.

Есть ли способ получить слои из модели, отличной от keras?

РЕДАКТИРОВАТЬ: для пояснения, модель, которую я взял из tenoflowhub: https://tfhub.dev/google/imagenet/mobilenet_v2_075_96/classification/2

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

TF.js поддерживает два API и соответствующие форматы сериализации: API слоев (соответствующий моделям Keras) и базовый API нижнего уровня (соответствующий произвольным графам TensorFlow).

В зависимости от того, где вы получаетемодель и способ ее преобразования, ваш файл может быть загружен через tf.loadLayersModel() или tf.loadGraphModel(), но не обоими способами.См. Таблицу доступных преобразований . .

. Даже если модель была изначально обучена с использованием Keras, она могла быть сохранена как низкоуровневый график TensorFlow, в котором структура слоев Keras потеряна.Я считаю, что это в настоящее время относится ко всем модулям TF-Hub.Таким образом, ваш текущий подход дает вам tf.GraphModel, из которого слои не могут быть восстановлены.

Мы предоставляем MobileNet v1, уже преобразованный из оригинального Keras в формат слоев TF.js, по указанному вами URL-адресу, так что выможете использовать loadLayersModel() (ранее loadModel()) с этим напрямую.В настоящее время мы не размещаем конвертированный MobileNet v2.Однако вы можете получить оригинальную модель Keras .h5 здесь , а затем преобразовать ее в формат слоев TF.js, используя tensorflowjs_converter.

0 голосов
/ 01 марта 2019

LoadFrozenModel устарело с 0.15.LoadGraphModel делает то же самое с меньшим параметром.Он принимает только в качестве параметра файл топологии модели.

Если в загруженном объекте нет слоев, это либо потому, что модель загружена плохо, либо замороженная модель не содержит каких-либо.

...