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

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

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

ความต้องการ

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

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

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

รุ่น Keras มักจะถูกบันทึกไว้ผ่านทาง model.save(filepath) ซึ่งเป็นผู้ผลิตไฟล์ HDF5 เดียว (.h5) ที่มีทั้งโครงสร้างรูปแบบและน้ำหนัก การแปลงไฟล์ดังกล่าวเป็นรูปแบบ TF.js เลเยอร์เรียกใช้คำสั่งต่อไปนี้ที่ 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 ทราบว่าคุณอาจจำเป็นต้องกำหนดค่าเซิร์ฟเวอร์ของคุณเพื่อ ช่วยให้ทรัพยากรข้ามแหล่งที่ใช้ร่วมกัน ( ธ ) ในการที่จะช่วยให้การเรียกไฟล์ใน 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 ใช้วิธีการนี้ใช้แบบจำลอง pretrained ที่ได้รับการดัดแปลงและเป็นเจ้าภาพใน Google Cloud Storage ได้

โปรดทราบว่าคุณหมายถึงรูปแบบทั้งการใช้ model.json ชื่อไฟล์ loadModel(...) เรียก model.json แล้วทำให้ HTTP เพิ่มเติม (S) ร้องขอที่จะได้รับไฟล์น้ำหนัก sharded อ้างอิงใน model.json ประจักษ์น้ำหนัก วิธีการนี้จะช่วยให้ทุกไฟล์เหล่านี้จะถูกเก็บไว้โดยเบราว์เซอร์ (และอาจจะโดยการแคชเซิร์ฟเวอร์เพิ่มเติมเกี่ยวกับอินเทอร์เน็ต) เพราะ model.json และเศษน้ำหนักแต่ละขนาดเล็กกว่าปกติแคช จำกัด ขนาดไฟล์ ดังนั้น โมเดลจึงมีแนวโน้มที่จะโหลดเร็วขึ้นในโอกาสต่อๆ ไป

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

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