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