Importar um modelo Keras para TensorFlow.js

Modelos Keras (tipicamente criadas por meio da API Python) podem ser salvos em um dos vários formatos . O formato "modelo inteiro" pode ser convertido para o formato de camadas do TensorFlow.js, que pode ser carregado diretamente no TensorFlow.js para inferência ou treinamento adicional.

O formato Layers TensorFlow.js alvo é um diretório que contém uma model.json arquivo e um conjunto de arquivos peso Sharded em formato binário. O model.json arquivo contém tanto o modelo de topologia (aka "arquitetura" ou "gráfico": uma descrição das camadas e como eles estão conectados) e um manifesto dos arquivos peso.

Requisitos

O procedimento de conversão requer um ambiente Python; você pode querer manter um isolado um usando pipenv ou virtualenv . Para instalar o conversor, o uso pip install tensorflowjs .

A importação de um modelo Keras para o TensorFlow.js é um processo de duas etapas. Primeiro, converta um modelo Keras existente para o formato TF.js Layers e, em seguida, carregue-o no TensorFlow.js.

Etapa 1. Converter um modelo Keras existente para o formato TF.js Layers

Modelos Keras são normalmente guardados através model.save(filepath) , que produz um ficheiro único HDF5 (.h5), contendo tanto o modelo de topologia e os pesos. Para converter esse arquivo para o formato TF.js Camadas, execute o seguinte comando, em que path/to/my_model.h5 é a fonte Keras .h5 arquivo e path/to/tfjs_target_dir é o diretório de saída de destino para os arquivos TF.js:

# bash

tensorflowjs_converter --input_format keras \
                       path/to/my_model.h5 \
                       path/to/tfjs_target_dir

Alternativa: Use a API Python para exportar diretamente para o formato de camadas TF.js.

Se você tem um modelo Keras em Python, pode exportá-lo diretamente para o formato TensorFlow.js Layers da seguinte maneira:

# Python

import tensorflowjs as tfjs

def train(...):
    model = keras.models.Sequential()   # for example
    ...
    model.compile(...)
    model.fit(...)
    tfjs.converters.save_keras_model(model, tfjs_target_dir)

Etapa 2: carregar o modelo no TensorFlow.js

Usar um servidor web para servir os arquivos de modelo convertidos você gerado na etapa 1. Observe que pode ser necessário configurar o servidor para permitir Cross-Origin Resource Sharing (CORS) , a fim de permitir que buscar os arquivos em JavaScript.

Em seguida, carregue o modelo no TensorFlow.js fornecendo o URL para o arquivo model.json:

// JavaScript

import * as tf from '@tensorflow/tfjs';

const model = await tf.loadLayersModel('https://foo.bar/tfjs_artifacts/model.json');

Agora o modelo está pronto para inferência, avaliação ou retreinamento. Por exemplo, o modelo carregado pode ser usado imediatamente para fazer uma previsão:

// JavaScript

const example = tf.fromPixels(webcamElement);  // for example
const prediction = model.predict(example);

Muitos dos TensorFlow.js Exemplos adotar essa abordagem, utilizando modelos pré-treinado que foram convertidos e hospedados no Google Cloud Storage.

Note que você se refere a todo o modelo usando o model.json nome de arquivo. loadModel(...) obtém model.json , e depois faz solicitações HTTP adicional (S) para obter os arquivos peso Sharded referenciados no model.json manifesto peso. Esta abordagem permite que todos esses arquivos para ser armazenado em cache pelo navegador (e, talvez, por servidores de cache adicionais na internet), porque o model.json e os cacos de peso são cada menor do que o limite de tamanho de arquivo de cache típica. Portanto, é provável que um modelo carregue mais rapidamente nas ocasiões subsequentes.

Recursos com suporte

As camadas TensorFlow.js atualmente oferecem suporte apenas a modelos Keras usando construções Keras padrão. Os modelos que usam operações ou camadas sem suporte - por exemplo, camadas personalizadas, camadas Lambda, perdas personalizadas ou métricas personalizadas - não podem ser importados automaticamente, porque dependem do código Python que não pode ser traduzido de forma confiável para JavaScript.