โมเดล 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 ได้อย่างน่าเชื่อถือ