Может ли tensorflowjs_converter работать с моделями Keras, созданными с помощью функционального API?

#python #tensorflow #keras #tensorflow.js

#python #tensorflow #keras #tensorflow.js

Вопрос:

Я пытаюсь преобразовать модели, созданные с помощью tf.keras на Python, в tensorflow.js формат для использования в Node.js . Вот версии моих пакетов:

 tensorflowjs: 1.0.1
Keras: 2.2.4
tf-nightly-2.0-preview: 2.0.0.dev20190321 (from pip install tensorflowjs)
  

Вот моя последовательная модель, также переделанная с помощью функционального API:

 # Sequential API
model = tf.keras.Sequential()
model.add(layers.Dense(128, activation='relu', input_shape=(22050,))
model.add(layers.Dense(9, activation='softmax'))

# Functional API
inputs = tf.keras.Input(shape=(22050,))
x = layers.Dense(128, activation='relu')(inputs)
logits = layers.Dense(9, activation='softmax')(x)
  

Когда я конвертирую последовательную модель в tfjs_layers_model using tensorflowjs_converter , она нормально загружается с tensorflowjs . Когда я делаю то же самое с функциональной моделью, я получаю ошибку конфигурации неправильно отформатированной модели:

 Error: Improperly formatted model config for layer {"_callHook":null,"_addedWeightNames":[],"_stateful":false,"id":1,"activityRegularizer":null,"inputSpec":[{"minNDim":2}],"supportsMasking":true,"_trainableWeights":[],"_nonTrainableWeights":[],"_losses":[],"_updates":[],"_built":false,"inboundNodes":[],"outboundNodes":[],"name":"dense_38","trainable_":true,"updatable":true,"initialWeights":null,"_refCount":null,"fastWeightInitDuringBuild":true,"activation":{},"useBias":true,"kernel":null,"bias":null,"DEFAULT_KERNEL_INITIALIZER":"glorotNormal","DEFAULT_BIAS_INITIALIZER":"zeros","units":128,"kernelInitializer":{"scale":1,"mode":"fanAvg","distribution":"uniform","seed":null},"biasInitializer":{},"kernelConstraint":null,"biasConstraint":null,"kernelRegularizer":null,"biasRegularizer":null}: "input_26"
  

Я также пробовал экспортировать как tfjs_graph_model , но tensorflowjs_converter это не разрешалось. Я хотел бы, чтобы модель в конечном итоге имела несколько выходных данных, поэтому я хотел бы использовать функциональный API, а не последовательный.

Комментарии:

1. Это может быть связано с ошибкой в формате сериализации, которая была недавно исправлена, но, возможно, еще не дошла до nightly. Можете ли вы проверить, работает ли это в последней стабильной версии tf (1.13.1)?

2. Я деинсталлировал tf-nightly-2.0-preview и установил tensorflow 1.13.1 , но при импорте получал ошибки tensorflowjs . Я получил ImportError: cannot import name 'convert_to_constants'