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

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

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

ข้อกำหนด

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

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

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

โดยปกติแล้วโมเดล 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 โดยตรง

หากคุณมีโมเดล Keras ใน Python คุณสามารถส่งออกไปยังรูปแบบเลเยอร์ 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

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

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

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