การอัปเกรดเป็น TensorFlow.js 3.0

มีอะไรเปลี่ยนแปลงใน TensorFlow.js 3.0

บันทึกประจำรุ่นมี อยู่ที่นี่ คุณสมบัติเด่นบางประการที่ผู้ใช้เผชิญ ได้แก่:

โมดูลที่กำหนดเอง

เราให้การสนับสนุนในการสร้างโมดูล tfjs แบบกำหนดเองเพื่อรองรับการสร้างชุดเบราว์เซอร์ที่ปรับขนาดให้เหมาะสม จัดส่ง JavaScript ให้กับผู้ใช้ของคุณน้อยลง หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ โปรดดูบทช่วยสอนนี้

คุณลักษณะนี้มุ่งเน้นไปที่การใช้งานในเบราว์เซอร์ อย่างไรก็ตาม การเปิดใช้งานความสามารถนี้จะกระตุ้นให้เกิดการเปลี่ยนแปลงบางอย่างที่อธิบายไว้ด้านล่าง

รหัส ES2017

นอกเหนือจากบันเดิลที่คอมไพล์ล่วงหน้าบางส่วนแล้ว วิธีหลักที่เราจัดส่งโค้ดของเราไปยัง NPM ในตอนนี้ก็คือการใช้ ES Modules ที่มี ไวยากรณ์ ES2017 สิ่งนี้ทำให้นักพัฒนาสามารถใช้ประโยชน์จาก ฟีเจอร์ JavaScript ที่ทันสมัย ​​และควบคุมสิ่งที่พวกเขาจัดส่งให้กับผู้ใช้ปลายทางได้ดียิ่งขึ้น

จุดเข้า module package.json ของเราไปยังไฟล์ไลบรารีแต่ละไฟล์ในรูปแบบ ES2017 (กล่าวคือ ไม่ใช่บันเดิล) สิ่งนี้ทำให้ต้นไม้สั่นและนักพัฒนาควบคุมการทรานสปิเลชั่นดาวน์สตรีมได้ดียิ่งขึ้น

เรามีรูปแบบทางเลือกสองสามรูปแบบเป็นชุดรวมที่คอมไพล์ไว้ล่วงหน้าเพื่อรองรับเบราว์เซอร์รุ่นเก่าและระบบโมดูลอื่นๆ เป็นไปตามหลักการตั้งชื่อที่อธิบายไว้ในตารางด้านล่าง และคุณสามารถโหลดได้จาก CDN ยอดนิยม เช่น JsDelivr และ Unpkg

ชื่อไฟล์ รูปแบบโมดูล เวอร์ชันภาษา
tf[-แพ็คเกจ].[นาที].js* ยูเอ็มดี อีเอส5
tf[-แพ็คเกจ].es2017.[นาที].js ยูเอ็มดี อีเอส2017
tf[-แพ็คเกจ].node.js** สามัญJS อีเอส5
tf[-แพ็คเกจ].es2017.fesm.[นาที].js ESM (ไฟล์เดี่ยว) อีเอส2017
index.js*** อีเอสเอ็ม อีเอส2017

* [แพ็คเกจ] หมายถึงชื่อเช่น core/converter/layers สำหรับแพ็คเกจย่อยของแพ็คเกจ tf.js หลัก [min] อธิบายตำแหน่งที่เราจัดเตรียมไฟล์ที่ย่อขนาด นอกเหนือจากไฟล์ที่ไม่ย่อขนาด

** รายการ main ของ package.json ของเราชี้ไปยังไฟล์นี้

*** module package.json ของเราชี้ไปที่ไฟล์นี้

หากคุณใช้ tensorflow.js ผ่าน npm และคุณกำลังใช้ Bundler คุณอาจต้องปรับการกำหนดค่า Bundler เพื่อให้แน่ใจว่าสามารถใช้โมดูล ES2017 หรือชี้ไปที่รายการอื่นใน package.json ออก

@tensorflow/tfjs-core มีขนาดบางกว่าตามค่าเริ่มต้น

เพื่อให้ การเขย่าต้นไม้ ดีขึ้น เราไม่ได้รวม chaining/fluent api บนเทนเซอร์ตามค่าเริ่มต้นใน @tensorflow/tfjs-core อีกต่อไป เราขอแนะนำให้ใช้การดำเนินการ (ops) โดยตรงเพื่อรับบันเดิลที่เล็กที่สุด เราจัดให้ import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops'; ที่คืนค่าการผูกมัด API

นอกจากนี้เรายังไม่ลงทะเบียนการไล่ระดับสีสำหรับเคอร์เนลตามค่าเริ่มต้นอีกต่อไป หากคุณต้องการการสนับสนุนการไล่ระดับสี/การฝึกอบรม คุณสามารถ import '@tensorflow/tfjs-core/dist/register_all_gradients';

การปรับโครงสร้างโค้ด การลงทะเบียนเคอร์เนลและการไล่ระดับสี

เราได้จัดระเบียบโค้ดของเราใหม่เพื่อให้ง่ายต่อการสนับสนุนทั้ง Ops และ Kernel ตลอดจนปรับใช้ Ops เคอร์เนล และการไล่ระดับสีแบบกำหนดเอง ดูคู่มือนี้สำหรับข้อมูลเพิ่มเติม

ทำลายการเปลี่ยนแปลง

คุณสามารถดูรายการการเปลี่ยนแปลงที่ไม่สมบูรณ์ทั้งหมด ได้ ที่นี่ แต่จะรวมเอา *Strict ops ทั้งหมด เช่น mulStrict หรือ addStrict ออกด้วย

การอัพเกรดโค้ดจาก 2.x

ผู้ใช้ @tensorflow/tfjs

แก้ไขปัญหาการเปลี่ยนแปลงใดๆ ที่แสดงไว้ที่นี่ ( https://github.com/tensorflow/tfjs/releases )

ผู้ใช้ @tensorflow/tfjs-core

แก้ไขปัญหาการเปลี่ยนแปลงด่วนที่แสดงไว้ที่นี่ ( https://github.com/tensorflow/tfjs/releases ) จากนั้นดำเนินการต่อไปนี้:

เพิ่ม chained op augmentors หรือใช้ ops โดยตรง

แทนที่จะ

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.

คุณต้องทำ

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();

คุณยังสามารถนำเข้า chaining/fluent api ทั้งหมดได้ด้วยการนำเข้าต่อไปนี้

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

หรือคุณสามารถใช้ op โดยตรง (คุณสามารถใช้การนำเข้าที่มีชื่อได้ที่นี่ด้วย)

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);

นำเข้ารหัสเริ่มต้น

หากคุณใช้การนำเข้าที่มีชื่อโดยเฉพาะ (แทนที่จะ import * as ... ) ในบางกรณีคุณอาจต้องดำเนินการ

import @tensorflow/tfjs-core

ใกล้กับด้านบนสุดของโปรแกรม ซึ่งจะช่วยป้องกันไม่ให้ Tree Shaker ที่ก้าวร้าวลดการเริ่มต้นที่จำเป็น

การอัพเกรดรหัสจาก 1.x

ผู้ใช้ @tensorflow/tfjs

ระบุการเปลี่ยนแปลงที่สำคัญใดๆ ที่แสดงไว้ ที่นี่ จากนั้นทำตามคำแนะนำในการอัพเกรดจาก 2.x

ผู้ใช้ @tensorflow/tfjs-core

จัดการการเปลี่ยนแปลงที่เสียหายที่แสดงไว้ ที่นี่ เลือกแบ็กเอนด์ตามที่อธิบายไว้ด้านล่าง จากนั้นทำตามขั้นตอนเพื่ออัปเกรดจาก 2.x

การเลือกแบ็กเอนด์

ใน TensorFlow.js 2.0 เราได้ลบ cpu และแบ็กเอนด์ webgl ออกจากแพ็คเกจของตัวเอง ดู @tensorflow/tfjs-backend-cpu , @tensorflow/tfjs-backend-webgl , @tensorflow/tfjs-backend-wasm , @tensorflow/tfjs-backend-webgpu สำหรับคำแนะนำเกี่ยวกับวิธีการรวมแบ็กเอนด์เหล่านั้น