Các mô hình Keras (thường được tạo thông qua API Python) có thể được lưu ở một trong một số định dạng . Định dạng "toàn bộ mô hình" có thể được chuyển đổi sang định dạng Lớp TensorFlow.js, có thể tải trực tiếp vào TensorFlow.js để suy luận hoặc đào tạo thêm.
Định dạng Lớp TensorFlow.js đích là một thư mục chứa tệp model.json
và một tập hợp các tệp trọng số được phân chia ở định dạng nhị phân. Tệp model.json
chứa cả cấu trúc liên kết mô hình (còn gọi là "kiến trúc" hoặc "biểu đồ": mô tả về các lớp và cách chúng được kết nối) và bản kê khai của các tệp trọng lượng.
Yêu cầu
Quy trình chuyển đổi yêu cầu môi trường Python; bạn có thể muốn giữ một cái riêng biệt bằng cách sử dụng pipenv hoặc virtualenv . Để cài đặt bộ chuyển đổi, hãy sử dụng pip install tensorflowjs
.
Nhập mô hình Keras vào TensorFlow.js là một quá trình gồm hai bước. Đầu tiên, chuyển đổi mô hình Keras hiện có sang định dạng Lớp TF.js, sau đó tải mô hình đó vào TensorFlow.js.
Bước 1. Chuyển đổi mô hình Keras hiện có sang định dạng Lớp TF.js
Các mô hình máy ảnh thường được lưu thông qua model.save(filepath)
, tạo ra một tệp HDF5 (.h5) duy nhất chứa cả cấu trúc liên kết mô hình và trọng số. Để chuyển đổi một tệp như vậy sang định dạng Lớp TF.js, hãy chạy lệnh sau, trong đó path/to/my_model.h5
là tệp Keras .h5 nguồn và path/to/tfjs_target_dir
là thư mục đầu ra đích cho các tệp TF.js:
# bash
tensorflowjs_converter --input_format keras \
path/to/my_model.h5 \
path/to/tfjs_target_dir
Thay thế: Sử dụng API Python để xuất trực tiếp sang định dạng Lớp TF.js
Nếu bạn có mô hình Keras bằng Python, bạn có thể xuất mô hình đó trực tiếp sang định dạng Lớp TensorFlow.js như sau:
# 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)
Bước 2: Tải mô hình vào TensorFlow.js
Sử dụng máy chủ web để phân phát các tệp mô hình đã chuyển đổi mà bạn đã tạo ở Bước 1. Lưu ý rằng bạn có thể cần định cấu hình máy chủ của mình để cho phép Chia sẻ tài nguyên giữa các nguồn gốc (CORS) để cho phép tìm nạp các tệp trong JavaScript.
Sau đó tải mô hình vào TensorFlow.js bằng cách cung cấp URL tới tệp model.json:
// JavaScript
import * as tf from '@tensorflow/tfjs';
const model = await tf.loadLayersModel('https://foo.bar/tfjs_artifacts/model.json');
Bây giờ mô hình đã sẵn sàng để suy luận, đánh giá hoặc đào tạo lại. Chẳng hạn, mô hình đã tải có thể được sử dụng ngay lập tức để đưa ra dự đoán:
// JavaScript
const example = tf.fromPixels(webcamElement); // for example
const prediction = model.predict(example);
Nhiều ví dụ về TensorFlow.js áp dụng phương pháp này, sử dụng các mô hình được đào tạo trước đã được chuyển đổi và lưu trữ trên Google Cloud Storage.
Lưu ý rằng bạn tham chiếu đến toàn bộ mô hình bằng tên tệp model.json
. loadModel(...)
tìm nạp model.json
, sau đó thực hiện các yêu cầu HTTP(S) bổ sung để lấy các tệp trọng lượng được phân chia được tham chiếu trong bảng kê khai trọng lượng model.json
. Cách tiếp cận này cho phép tất cả các tệp này được trình duyệt lưu vào bộ nhớ đệm (và có thể bằng các máy chủ lưu bộ nhớ đệm bổ sung trên internet), vì model.json
và các phân đoạn trọng số đều nhỏ hơn giới hạn kích thước tệp bộ nhớ đệm thông thường. Do đó, mô hình có thể tải nhanh hơn trong những lần tiếp theo.
Các tính năng được hỗ trợ
Các lớp TensorFlow.js hiện chỉ hỗ trợ các mô hình Keras sử dụng cấu trúc Keras tiêu chuẩn. Các mô hình sử dụng các hoạt động hoặc lớp không được hỗ trợ—ví dụ: lớp tùy chỉnh, lớp Lambda, tổn thất tùy chỉnh hoặc số liệu tùy chỉnh—không thể được nhập tự động vì chúng phụ thuộc vào mã Python không thể dịch sang JavaScript một cách đáng tin cậy.