ارتقا به TensorFlow.js 3.0

آنچه در TensorFlow.js 3.0 تغییر کرده است

یادداشت های انتشار در اینجا موجود است. چند ویژگی قابل توجه مواجهه کاربر عبارتند از:

ماژول های سفارشی

ما از ایجاد ماژول‌های tfjs سفارشی برای پشتیبانی از تولید بسته‌های مرورگر بهینه‌شده با اندازه پشتیبانی می‌کنیم. جاوا اسکریپت کمتری را برای کاربران خود ارسال کنید. برای کسب اطلاعات بیشتر در این مورد، این آموزش را ببینید .

این ویژگی برای استقرار در مرورگر طراحی شده است، با این حال فعال کردن این قابلیت باعث ایجاد برخی از تغییرات توضیح داده شده در زیر می شود.

کد ES2017

علاوه بر برخی از بسته‌های پیش‌کامپایل، راه اصلی که اکنون کد خود را به NPM ارسال می‌کنیم، ماژول‌های ES با نحو ES2017 است . این به توسعه دهندگان اجازه می دهد تا از ویژگی های مدرن جاوا اسکریپت استفاده کنند و کنترل بیشتری بر آنچه که برای کاربران نهایی ارسال می کنند داشته باشند.

نقطه ورود module package.json ما به فایل های کتابخانه فردی در قالب ES2017 (یعنی یک بسته نرم افزاری نیست). این امکان تکان دادن درخت و کنترل بیشتر توسعه دهنده بر انتقال پایین دست را فراهم می کند.

ما چند فرمت جایگزین را به عنوان بسته های از پیش کامپایل شده برای پشتیبانی از مرورگرهای قدیمی و سایر سیستم های ماژول ارائه می دهیم. آنها از قرارداد نامگذاری شرح داده شده در جدول زیر پیروی می کنند و می توانید آنها را از CDN های محبوب مانند 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

* [package] به نام هایی مانند core/converter/layers برای زیر بسته های بسته اصلی tf.js اشاره دارد. [min] توضیح می‌دهد که ما فایل‌های کوچک‌سازی‌شده را علاوه بر فایل‌های کوچک نشده ارائه می‌دهیم.

** ورودی main package.json ما به این فایل اشاره می کند.

*** ورودی module package.json ما به این فایل اشاره می کند.

اگر از tensorflow.js از طریق npm استفاده می‌کنید و از bundler استفاده می‌کنید، ممکن است لازم باشد پیکربندی باندلر خود را تنظیم کنید تا مطمئن شوید که می‌تواند ماژول‌های ES2017 را مصرف کند یا آن را به یکی از ورودی‌های outpack.json نشان دهد.

@tensorflow/tfjs-core به طور پیش‌فرض باریک‌تر است

برای فعال کردن درخت تکان دادن بهتر، دیگر 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';

سازماندهی مجدد کد، هسته و ثبت گرادیان

ما کد خود را دوباره سازماندهی کرده‌ایم تا هم مشارکت در عملیات‌ها و هسته‌ها و هم پیاده‌سازی عملیات‌ها، هسته‌ها و گرادیان‌های سفارشی را آسان‌تر کنیم. برای اطلاعات بیشتر به این راهنما مراجعه کنید .

شکستن تغییرات

فهرست کاملی از تغییرات شکسته را می‌توانید در اینجا پیدا کنید، اما این تغییرات شامل حذف همه عملیات‌های *Strict مانند mulStrict یا addStrict است.

ارتقا کد از 2.x

کاربران @tensorflow/tfjs

هر گونه تغییر شکسته فهرست شده در اینجا را بررسی کنید ( https://github.com/tensorflow/tfjs/releases )

کاربران @tensorflow/tfjs-core

هر گونه تغییر شکسته فهرست شده در اینجا ( https://github.com/tensorflow/tfjs/releases ) را بررسی کنید، سپس موارد زیر را انجام دهید:

افزایش دهنده های عملیات زنجیره ای را اضافه کنید یا مستقیماً از 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();

همچنین می توانید تمام 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 ما بک‌اندهای cpu و webgl را در بسته‌های خودشان حذف کردیم. برای دستورالعمل‌هایی در مورد نحوه گنجاندن آن پشتیبان‌ها، @tensorflow/tfjs-backend-cpu ، @tensorflow/tfjs-backend-webgl ، @tensorflow/tfjs-backend-wasm ، @tensorflow/tfjs-backend-webgpu را ببینید.