TensorFlow.js 3.0 的變更
版本資訊在此處提供。一些值得注意的使用者導向功能包括:
自訂模組
我們提供建立自訂 tfjs 模組的支援,以協助產生大小最佳化的瀏覽器套件組合。減少傳送給使用者的 JavaScript 程式碼。若要進一步瞭解此功能,請參閱本教學課程。
此功能適用於瀏覽器中的部署,但啟用此功能會促使下列部分變更。
ES2017 程式碼
除了部分預先編譯的套件組合外,**我們現在將程式碼發佈到 NPM 的主要方式是採用 ES 模組與 ES2017 語法**。這可讓開發人員運用 新式 JavaScript 功能,並更妥善地掌控要發佈給終端使用者的內容。
我們的 package.json module
進入點指向 ES2017 格式 (亦即非套件組合) 的個別程式庫檔案。這可啟用樹狀結構搖動,並讓開發人員更妥善地掌控下游轉譯。
我們確實提供一些替代格式作為預先編譯的套件組合,以支援舊版瀏覽器和其他模組系統。這些格式遵循下表所述的命名慣例,您可以從 JsDelivr 和 Unpkg 等熱門 CDN 載入這些格式。
檔案名稱 | 模組格式 | 語言版本 |
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 套件的子套件名稱,例如 core/converter/layers。[min] 說明我們在何處提供已縮小化的檔案以及未縮小化的檔案。
** 我們的 package.json main
進入點指向此檔案。
*** 我們的 package.json module
進入點指向此檔案。
如果您透過 npm 使用 tensorflow.js,而且您使用的是套件組合器,您可能需要調整套件組合器組態,以確保它可以取用 ES2017 模組,或將其指向 out package.json 中的另一個項目。
@tensorflow/tfjs-core 預設更精簡
為了改善 樹狀結構搖動,我們不再預設在 @tensorflow/tfjs-core 中的張量上加入鏈結/流暢 API。我們建議直接使用運算 (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),然後執行下列操作
新增鏈結運算增強器或直接使用運算
而非
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,以取得關於如何加入這些後端的指示。