Mengupgrade ke TensorFlow.js 3.0

Apa yang berubah di TensorFlow.js 3.0

Catatan rilis tersedia di sini . Beberapa fitur penting yang dihadapi pengguna meliputi:

Modul Khusus

Kami memberikan dukungan untuk membuat modul tfjs khusus untuk mendukung produksi bundel browser dengan ukuran yang dioptimalkan. Kirimkan lebih sedikit JavaScript ke pengguna Anda. Untuk mempelajari lebih lanjut tentang ini, lihat tutorial ini .

Fitur ini diarahkan untuk penerapan di browser, namun mengaktifkan kemampuan ini memotivasi beberapa perubahan yang dijelaskan di bawah.

Kode ES2017

Selain beberapa bundel pra-kompilasi, cara utama kami mengirimkan kode ke NPM adalah sebagai Modul ES dengan sintaks ES2017 . Hal ini memungkinkan pengembang untuk memanfaatkan fitur JavaScript modern dan memiliki kontrol lebih besar atas apa yang mereka kirimkan kepada pengguna akhir.

Titik masuk module package.json kami ke file perpustakaan individual dalam format ES2017 (yaitu bukan bundel). Hal ini memungkinkan penggoncangan pohon dan kontrol pengembang yang lebih besar terhadap transpilasi hilir.

Kami menyediakan beberapa format alternatif sebagai bundel yang telah dikompilasi sebelumnya untuk mendukung browser lama dan sistem modul lainnya. Mereka mengikuti konvensi penamaan yang dijelaskan pada tabel di bawah dan Anda dapat memuatnya dari CDN populer seperti JsDelivr dan Unpkg.

Nama file Format Modul Versi Bahasa
tf[-paket].[min].js* UMD ES5
tf[-paket].es2017.[min].js UMD ES2017
tf[-paket].node.js** JS Umum ES5
tf[-paket].es2017.fesm.[min].js ESM (File datar tunggal) ES2017
indeks.js*** ESM ES2017

* [paket] mengacu pada nama seperti core/converter/layers untuk subpaket dari paket utama tf.js. [min] menjelaskan di mana kami menyediakan file yang diperkecil selain file yang tidak diperkecil.

** Titik masuk main package.json kami ke file ini.

*** Entri module package.json kami menunjuk ke file ini.

Jika Anda menggunakan tensorflow.js melalui npm dan menggunakan bundler, Anda mungkin perlu menyesuaikan konfigurasi bundler untuk memastikan konfigurasi bundler dapat menggunakan modul ES2017 atau mengarahkannya ke salah satu entri lain di package.json.

@tensorflow/tfjs-core secara default lebih ramping

Untuk mengaktifkan guncangan pohon yang lebih baik, kami tidak lagi menyertakan api chaining/fluent pada tensor secara default di @tensorflow/tfjs-core. Sebaiknya gunakan operasi (ops) secara langsung untuk mendapatkan bundel terkecil. Kami menyediakan import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops'; yang memulihkan api rantai.

Kami juga tidak lagi mendaftarkan gradien untuk kernel secara default. Jika Anda menginginkan dukungan gradien/pelatihan, Anda dapat import '@tensorflow/tfjs-core/dist/register_all_gradients';

Reorganisasi Kode, registri kernel & gradien

Kami telah mengatur ulang kode kami untuk mempermudah kontribusi operasi dan kernel serta mengimplementasikan operasi, kernel, dan gradien khusus. Lihat panduan ini untuk informasi lebih lanjut .

Perubahan yang Mengganggu

Daftar lengkap perubahan yang dapat menyebabkan gangguan dapat ditemukan di sini , tetapi perubahan tersebut mencakup penghapusan semua operasi *Strict seperti mulStrict atau addStrict.

Meningkatkan Kode dari 2.x

Pengguna @tensorflow/tfjs

Atasi semua perubahan yang dapat menyebabkan gangguan yang tercantum di sini ( https://github.com/tensorflow/tfjs/releases )

Pengguna @tensorflow/tfjs-core

Atasi semua perubahan yang dapat menyebabkan gangguan yang tercantum di sini ( https://github.com/tensorflow/tfjs/releases ), lalu lakukan hal berikut:

Tambahkan augmentor operasi berantai atau gunakan operasi secara langsung

Daripada

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.

Anda perlu melakukannya

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

Anda juga dapat mengimpor semua api rantai/lancar dengan impor berikut

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

Alternatifnya, Anda dapat menggunakan operasi secara langsung (Anda juga dapat menggunakan impor bernama di sini)

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

Impor kode inisialisasi

Jika Anda secara eksklusif menggunakan impor bernama (bukan import * as ... ) maka dalam beberapa kasus Anda mungkin perlu melakukannya

import @tensorflow/tfjs-core

di dekat bagian atas program Anda, ini mencegah pengguncang pohon yang agresif membatalkan inisialisasi yang diperlukan.

Meningkatkan Kode dari 1.x

Pengguna @tensorflow/tfjs

Atasi setiap perubahan yang mengganggu yang tercantum di sini . Kemudian ikuti petunjuk untuk mengupgrade dari 2.x

Pengguna @tensorflow/tfjs-core

Atasi semua perubahan yang mengganggu yang tercantum di sini , pilih backend seperti yang dijelaskan di bawah, lalu ikuti langkah-langkah untuk meningkatkan dari 2.x

Memilih backend

Di TensorFlow.js 2.0 kami menghapus backend cpu dan webgl ke dalam paketnya sendiri. Lihat @tensorflow/tfjs-backend-cpu , @tensorflow/tfjs-backend-webgl , @tensorflow/tfjs-backend-wasm , @tensorflow/tfjs-backend-webgpu untuk petunjuk tentang cara menyertakan backend tersebut.