การนำเข้าโมเดล Keras ไปยัง TensorFlow.js

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

โมเดล Keras (โดยทั่วไปจะสร้างผ่าน Python API) อาจถูกบันทึกในรูปแบบใด รูปแบบ หนึ่ง รูปแบบ "ทั้งโมเดล" สามารถแปลงเป็นรูปแบบเลเยอร์ TensorFlow.js ซึ่งสามารถโหลดลงใน TensorFlow.js ได้โดยตรงสำหรับการอนุมานหรือสำหรับการฝึกอบรมเพิ่มเติม

รูปแบบเลเยอร์ TensorFlow.js เป้าหมายคือไดเร็กทอรีที่มีไฟล์ model.json และชุดของไฟล์น้ำหนักที่แบ่งส่วนไว้ในรูปแบบไบนารี ไฟล์ model.json มีทั้งโมเดลโทโพโลยี (หรือที่เรียกว่า "สถาปัตยกรรม" หรือ "กราฟ": คำอธิบายของเลเยอร์และวิธีเชื่อมต่อ) และรายการของไฟล์น้ำหนัก

ความต้องการ

ขั้นตอนการแปลงต้องใช้สภาพแวดล้อม Python คุณอาจต้องการเก็บแยกไว้โดยใช้ pipenv หรือ virtualenv ในการติดตั้งตัวแปลง ให้ใช้ pip install tensorflowjs

การนำเข้าโมเดล Keras ไปยัง TensorFlow.js เป็นกระบวนการสองขั้นตอน ขั้นแรก แปลงโมเดล Keras ที่มีอยู่เป็นรูปแบบเลเยอร์ TF.js จากนั้นโหลดลงใน TensorFlow.js

ขั้นตอนที่ 1 แปลงโมเดล Keras ที่มีอยู่เป็นรูปแบบเลเยอร์ TF.js

โมเดล Keras มักจะถูกบันทึกผ่าน model.save(filepath) ซึ่งสร้างไฟล์ HDF5 (.h5) ไฟล์เดียวที่มีทั้งโทโพโลยีของโมเดลและน้ำหนัก ในการแปลงไฟล์เป็นรูปแบบ TF.js Layers ให้รันคำสั่งต่อไปนี้ โดยที่ path/to/my_model.h5 เป็นไฟล์ Keras .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 Layers format

หากคุณมีโมเดล Keras ใน Python คุณสามารถส่งออกโดยตรงไปยังรูปแบบ TensorFlow.js Layers ดังนี้:

# 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

ใช้เว็บเซิร์ฟเวอร์เพื่อให้บริการไฟล์โมเดลที่แปลงแล้วซึ่งคุณสร้างขึ้นในขั้นตอนที่ 1 โปรดทราบว่าคุณอาจต้องกำหนดค่าเซิร์ฟเวอร์ของคุณเพื่อ อนุญาต Cross-Origin Resource Sharing (CORS) เพื่อให้สามารถดึงไฟล์ใน JavaScript

จากนั้นโหลดโมเดลลงใน TensorFlow.js โดยระบุ URL ไปยังไฟล์ model.json:

// 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 วิธีนี้ทำให้เบราว์เซอร์แคชไฟล์ทั้งหมดเหล่านี้ได้ (และอาจโดยเซิร์ฟเวอร์แคชเพิ่มเติมบนอินเทอร์เน็ต) เนื่องจาก model.json และชาร์ดน้ำหนักมีขนาดเล็กกว่าขีดจำกัดขนาดไฟล์แคชทั่วไป ดังนั้นโมเดลจึงมีแนวโน้มที่จะโหลดเร็วขึ้นในโอกาสต่อๆ ไป

คุณสมบัติที่รองรับ

ปัจจุบันเลเยอร์ TensorFlow.js รองรับเฉพาะรุ่น Keras ที่ใช้โครงสร้าง Keras มาตรฐาน โมเดลที่ใช้ ops หรือเลเยอร์ที่ไม่ได้รับการสนับสนุน เช่น เลเยอร์ที่กำหนดเอง เลเยอร์ Lambda การสูญเสียที่กำหนดเอง หรือเมตริกที่กำหนดเอง ไม่สามารถนำเข้าได้โดยอัตโนมัติ เนื่องจากโมเดลเหล่านี้ขึ้นอยู่กับโค้ด Python ที่ไม่สามารถแปลเป็น JavaScript ได้อย่างน่าเชื่อถือ