Может ли tenorflowjs_converter работать с моделями Keras, созданными с помощью функционального API? - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь преобразовать модели, сделанные с 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)

Вот моя модель Sequential, также переделанная с функциональным 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)

Когда я преобразовываю модель Sequential в tfjs_layers_model, используя 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, а не последовательный.

...