本頁面由 Cloud Translation API 翻譯而成。
Switch to English

將Keras模型導入TensorFlow.js

Keras模型(通常通過Python API創建)可以以幾種格式之一保存。可以將“整個模型”格式轉換為TensorFlow.js圖層格式,可以將其直接加載到TensorFlow.js中進行推理或進一步訓練。

目標TensorFlow.js圖層格式是一個目錄,其中包含model.json文件和一組二進制形式的分片權重文件。 model.json文件既包含模型拓撲(也稱為“體系結構”或“圖形”:層及其連接方式的描述)和權重文件的清單。

要求

轉換過程需要Python環境;您可能需要使用pipenvvirtualenv保持隔離。要安裝轉換器,請使用pip install tensorflowjs

將Keras模型導入TensorFlow.js需要兩個步驟。首先,將現有的Keras模型轉換為TF.js圖層格式,然後將其加載到TensorFlow.js中。

步驟1.將現有的Keras模型轉換為TF.js Layers格式

Keras模型通常通過model.save(filepath)保存,該模型會生成一個包含模型拓撲和權重的HDF5(.h5)文件。要將此類文件轉換為TF.js圖層格式,請運行以下命令,其中path/to/my_model.h5是源path/to/my_model.h5 .h5文件,而path/to/tfjs_target_dir是TF.js文件的目標輸出目錄:

# bash

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

備選方案:使用Python API直接導出為TF.js圖層格式

如果您在Python中擁有Keras模型,則可以將其直接導出為TensorFlow.js圖層格式,如下所示:

# 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)

步驟2:將模型加載到TensorFlow.js中

使用Web服務器來提供在步驟1中生成的轉換後的模型文件。請注意,您可能需要配置服務器以允許跨域資源共享(CORS) ,以便允許使用JavaScript提取文件。

然後通過提供model.json文件的URL將模型加載到TensorFlow.js中:

// JavaScript

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

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

現在,該模型已準備好進行推斷,評估或重新訓練。例如,加載的模型可以立即用於進行預測:

// JavaScript

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

許多TensorFlow.js示例都採用這種方法,使用的是經過預先訓練的模型,這些模型已轉換並託管在Google Cloud Storage上。

請注意,您使用model.json文件名引用了整個模型。 loadModel(...)提取model.json ,然後發出其他HTTP(S)請求以獲取model.json重量清單中引用的分片重量文件。這種方法允許所有這些文件由瀏覽器(也許還可以由Internet上的其他緩存服務器)緩存,因為model.json和權重碎片均小於典型的緩存文件大小限制。因此,模型可能會在隨後的情況下更快地加載。

支持的功能

TensorFlow.js圖層當前僅支持使用標準Keras構造的Keras模型。使用不受支持的操作或圖層(例如自定義圖層,Lambda圖層,自定義損耗或自定義指標)的模型無法自動導入,因為它們依賴於無法可靠地轉換為JavaScript的Python代碼。