Nâng cấp lên TensorFlow.js 3.0

Điều gì đã thay đổi trong TensorFlow.js 3.0

Ghi chú phát hành có sẵn ở đây . Một số tính năng đáng chú ý dành cho người dùng bao gồm:

Mô-đun tùy chỉnh

Chúng tôi cung cấp hỗ trợ để tạo các mô-đun tfjs tùy chỉnh để hỗ trợ tạo các gói trình duyệt được tối ưu hóa kích thước. Gửi ít JavaScript hơn cho người dùng của bạn. Để tìm hiểu thêm về điều này, hãy xem hướng dẫn này .

Tính năng này hướng tới việc triển khai trong trình duyệt, tuy nhiên việc bật khả năng này sẽ thúc đẩy một số thay đổi được mô tả bên dưới.

Mã ES2017

Ngoài một số gói biên dịch trước, cách chính mà chúng tôi hiện gửi mã của mình tới NPM là dưới dạng Mô-đun ES với cú pháp ES2017 . Điều này cho phép các nhà phát triển tận dụng các tính năng JavaScript hiện đại và có quyền kiểm soát tốt hơn đối với những gì họ gửi đến người dùng cuối.

Mục nhập module package.json của chúng tôi trỏ đến các tệp thư viện riêng lẻ ở định dạng ES2017 (tức là không phải một gói). Điều này cho phép rung cây và kiểm soát tốt hơn của nhà phát triển đối với quá trình chuyển dịch xuôi dòng.

Chúng tôi cung cấp một số định dạng thay thế dưới dạng các gói được biên dịch trước để hỗ trợ các trình duyệt cũ và các hệ thống mô-đun khác. Chúng tuân theo quy ước đặt tên được mô tả trong bảng bên dưới và bạn có thể tải chúng từ các CDN phổ biến như JsDelivr và Unpkg.

Tên tệp Định dạng mô-đun Phiên bản ngôn ngữ
tf[-package].[min].js* UMD ES5
tf[-package].es2017.[min].js UMD ES2017
tf[-package].node.js** CommonJS ES5
tf[-package].es2017.fesm.[min].js ESM (Tệp phẳng đơn) ES2017
chỉ mục.js*** ESM ES2017

* [gói] đề cập đến các tên như core/converter/layers cho các gói con của gói tf.js chính. [phút] mô tả nơi chúng tôi cung cấp các tệp được rút gọn ngoài các tệp chưa được rút gọn.

** main package.json của chúng tôi trỏ đến tệp này.

*** Mục nhập module pack.json của chúng tôi trỏ đến tệp này.

Nếu bạn đang sử dụng tensorflow.js thông qua npm và bạn đang sử dụng trình đóng gói, bạn có thể cần phải điều chỉnh cấu hình trình đóng gói của mình để đảm bảo rằng nó có thể sử dụng các mô-đun ES2017 hoặc trỏ nó đến một mục khác trong gói.json.

@tensorflow/tfjs-core theo mặc định mỏng hơn

Để cho phép rung cây tốt hơn, theo mặc định, chúng tôi không còn bao gồm api chuỗi/thông thạo trên tensor trong @tensorflow/tfjs-core nữa. Chúng tôi khuyên bạn nên sử dụng trực tiếp các thao tác (ops) để có được gói nhỏ nhất. Chúng tôi cung cấp tính import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops'; khôi phục api chuỗi.

Theo mặc định, chúng tôi cũng không còn đăng ký độ dốc cho hạt nhân nữa. Nếu bạn muốn hỗ trợ độ dốc/đào tạo, bạn có thể import '@tensorflow/tfjs-core/dist/register_all_gradients';

Tổ chức lại mã, đăng ký kernel và gradient

Chúng tôi đã tổ chức lại mã của mình để giúp việc đóng góp op và hạt nhân cũng như triển khai các op, hạt nhân và gradient tùy chỉnh trở nên dễ dàng hơn. Xem hướng dẫn này để biết thêm thông tin .

Thay đổi đột phá

Bạn có thể tìm thấy danh sách đầy đủ các thay đổi có thể gây lỗi tại đây nhưng chúng bao gồm việc xóa tất cả *Các hoạt động nghiêm ngặt như mulStrict hoặc addStrict.

Nâng cấp mã từ 2.x

Người dùng @tensorflow/tfjs

Giải quyết mọi thay đổi vi phạm được liệt kê tại đây ( https://github.com/tensorflow/tfjs/releases )

Người dùng @tensorflow/tfjs-core

Giải quyết mọi thay đổi vi phạm được liệt kê ở đây ( https://github.com/tensorflow/tfjs/releases ), sau đó thực hiện như sau:

Thêm các bộ tăng cường op theo chuỗi hoặc sử dụng op trực tiếp

Còn hơn là

import * as tf from '@tensorflow/tfjs-core';
import '@tensorflow/tfjs-backend-webgl';

const a = tf.tensor([1,2,3,4]);
const b = a.sum(); // this is a 'chained' op.

Bạn cần phải làm

import * as tf from '@tensorflow/tfjs-core';
import '@tensorflow/tfjs-backend-webgl';
import '@tensorflow/tfjs-core/dist/public/chained_ops/sum'; // add the 'sum' chained op to all tensors

const a = tf.tensor([1,2,3,4]);
const b = a.sum();

Bạn cũng có thể nhập tất cả api chuỗi/thông thạo bằng cách nhập sau

import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops';

Ngoài ra, bạn có thể sử dụng op trực tiếp (bạn cũng có thể sử dụng nhập khẩu có tên ở đây)

import * as tf from '@tensorflow/tfjs-core';
import '@tensorflow/tfjs-backend-webgl';

const a = tf.tensor([1,2,3,4]);
const b = tf.sum(a);

Nhập mã khởi tạo

Nếu bạn độc quyền sử dụng các mục nhập có tên (thay vì import * as ... ) thì trong một số trường hợp, bạn có thể cần phải làm

import @tensorflow/tfjs-core

ở gần đầu chương trình của bạn, điều này ngăn cản những người phá cây hung hãn bỏ đi bất kỳ bước khởi tạo cần thiết nào.

Nâng cấp mã từ 1.x

Người dùng @tensorflow/tfjs

Giải quyết mọi thay đổi đáng chú ý được liệt kê ở đây . Sau đó làm theo hướng dẫn nâng cấp từ 2.x

Người dùng @tensorflow/tfjs-core

Giải quyết mọi thay đổi đáng chú ý được liệt kê ở đây , chọn phần phụ trợ như được mô tả bên dưới rồi làm theo các bước để nâng cấp từ 2.x

Chọn (các) phần phụ trợ

Trong TensorFlow.js 2.0, chúng tôi đã loại bỏ phần phụ trợ cpu và webgl vào các gói riêng của chúng. Xem @tensorflow/tfjs-backend-cpu , @tensorflow/tfjs-backend-webgl , @tensorflow/tfjs-backend-wasm , @tensorflow/tfjs-backend-webgpu để biết hướng dẫn về cách bao gồm các chương trình phụ trợ đó.