שדרוג ל- TensorFlow.js 3.0

מה השתנה ב-TensorFlow.js 3.0

הערות פרסום זמינות כאן . כמה תכונות בולטות העומדות בפני משתמשים כוללות:

מודולים מותאמים אישית

אנו מספקים תמיכה ליצירת מודולי tfjs מותאמים אישית כדי לתמוך בייצור חבילות דפדפן מותאמות לגודל. שלח פחות JavaScript למשתמשים שלך. למידע נוסף על כך, עיין במדריך זה .

תכונה זו מיועדת לפריסה בדפדפן, אולם הפעלת יכולת זו מניעה חלק מהשינויים המתוארים להלן.

קוד ES2017

בנוסף לכמה חבילות הידור מראש, הדרך העיקרית שבה אנו שולחים כעת את הקוד שלנו ל-NPM היא כמודולי ES עם תחביר ES2017 . זה מאפשר למפתחים לנצל את היתרונות של תכונות JavaScript המודרניות ולקבל שליטה רבה יותר על מה שהם שולחים למשתמשי הקצה שלהם.

נקודת הכניסה module package.json שלנו לקבצי ספרייה בודדים בפורמט ES2017 (כלומר לא חבילה). זה מאפשר טלטול עצים ושליטה גדולה יותר של מפתחים על טרנספילציה במורד הזרם.

אנו מספקים כמה פורמטים חלופיים כחבילות הידור מראש כדי לתמוך בדפדפנים מדור קודם ובמערכות מודול אחרות. הם פועלים לפי מוסכמות השמות המתוארות בטבלה למטה ותוכלו לטעון אותם מ-CDNs פופולריים כגון JsDelivr ו-Unpkg.

שם קובץ פורמט מודול גרסת שפה
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 (קובץ שטוח יחיד) ES2017
index.js*** ESM ES2017

* [חבילה] מתייחסת לשמות כמו ליבה/ממיר/שכבות עבור תת-חבילות של חבילת tf.js הראשית. [דק] מתאר היכן אנו מספקים קבצים ממוזערים בנוסף לקבצים לא ממוזערים.

** הכניסה main שלנו package.json מצביעה על קובץ זה.

*** כניסת module package.json שלנו מצביעה על קובץ זה.

אם אתה משתמש ב-tensorflow.js דרך npm ואתה משתמש ב-Bundler, ייתכן שיהיה עליך להתאים את תצורת ה-Bundler שלך כדי לוודא שהוא יכול לצרוך את מודולי ES2017 או להפנות אותו לאחד אחר מהערכים ב-out package.json.

@tensorflow/tfjs-core הוא רזה יותר כברירת מחדל

כדי לאפשר ניעור עצים טוב יותר, אנחנו כבר לא כוללים את ה-chaining/fluent API בטנסור כברירת מחדל ב-@tensorflow/tfjs-core. אנו ממליצים להשתמש בפעולות (אופס) ישירות כדי לקבל את החבילה הקטנה ביותר. אנו מספקים import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops'; שמשחזר את ה-API של השרשרת.

אנחנו גם לא רושמים יותר גרדיאנטים עבור גרעינים כברירת מחדל. אם אתה רוצה תמיכה בשיפוע/אימון אתה יכול import '@tensorflow/tfjs-core/dist/register_all_gradients';

ארגון מחדש של קוד, רישום ליבה ושיפוע

ארגנו מחדש את הקוד שלנו כדי שיהיה קל יותר לתרום אופציות וקרנלים כמו גם ליישם אופציות מותאמות אישית, גרעינים והדרגות. עיין במדריך זה למידע נוסף .

שוברים שינויים

רשימה מלאה של שינויים שבירה ניתן למצוא כאן , אבל הם כוללים הסרה של כל *Strict ops כמו mulStrict או addStrict.

שדרוג קוד מ-2.x

משתמשים של @tensorflow/tfjs

התייחסו לשינויים הפורצים המפורטים כאן ( https://github.com/tensorflow/tfjs/releases )

משתמשים של @tensorflow/tfjs-core

התייחס לשינויים הפורצים המפורטים כאן ( https://github.com/tensorflow/tfjs/releases ), ולאחר מכן בצע את הפעולות הבאות:

הוסף מגבירי הפעלה משורשרים או השתמש באופציות ישירות

ולא

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

לחלופין, אתה יכול להשתמש באופ ישירות (תוכל להשתמש ביבוא עם שם גם כאן)

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

ליד החלק העליון של התוכנית שלך, זה מונע מנערי עצים אגרסיביים להפיל כל אתחול הכרחי.

שדרוג קוד מ-1.x

משתמשים של @tensorflow/tfjs

התייחס לכל שינויי שבירה המפורטים כאן . לאחר מכן עקוב אחר ההוראות לשדרוג מ-2.x

משתמשים של @tensorflow/tfjs-core

התייחס לשינויים הפורצים המפורטים כאן , בחר קצה אחורי כמתואר להלן ולאחר מכן בצע את השלבים לשדרוג מ-2.x

בחירת קצה/ים אחורי

ב-TensorFlow.js 2.0 הסרנו את המעבדים וה-webgl האחוריים לתוך החבילות שלהם. ראה @tensorflow/tfjs-backend-cpu , @tensorflow/tfjs-backend-webgl , @tensorflow/tfjs-backend-wasm , @tensorflow/tfjs-backend-webgpu לקבלת הוראות כיצד לכלול את אותם backends.