Cosa è cambiato in TensorFlow.js 3.0
Le note sulla versione sono disponibili qui . Alcune importanti funzionalità rivolte agli utenti includono:
Moduli personalizzati
Forniamo supporto per la creazione di moduli tfjs personalizzati per supportare la produzione di bundle browser con dimensioni ottimizzate. Spedisci meno JavaScript ai tuoi utenti. Per saperne di più, consulta questo tutorial .
Questa funzionalità è orientata all'implementazione nel browser, tuttavia l'abilitazione di questa funzionalità motiva alcune delle modifiche descritte di seguito.
Codice ES2017
Oltre ad alcuni bundle di precompilazione, il modo principale con cui ora spediamo il nostro codice a NPM è come moduli ES con sintassi ES2017 . Ciò consente agli sviluppatori di sfruttare le moderne funzionalità JavaScript e di avere un maggiore controllo su ciò che spediscono agli utenti finali.
Il punto di ingresso del nostro module
package.json ai singoli file di libreria in formato ES2017 (ovvero non un bundle). Ciò consente lo scuotimento degli alberi e un maggiore controllo da parte dello sviluppatore sulla transpilazione downstream.
Forniamo alcuni formati alternativi come bundle precompilati per supportare browser legacy e altri sistemi di moduli. Seguono la convenzione di denominazione descritta nella tabella seguente e puoi caricarli da CDN popolari come JsDelivr e Unpkg.
Nome del file | Formato del modulo | Versione in lingua |
tf[-pacchetto].[min].js* | UMD | ES5 |
tf[-pacchetto].es2017.[min].js | UMD | ES2017 |
tf[-pacchetto].node.js** | CommonJS | ES5 |
tf[-pacchetto].es2017.fesm.[min].js | ESM (file flat singolo) | ES2017 |
indice.js*** | MES | ES2017 |
* [pacchetto] si riferisce a nomi come core/converter/layers per i sottopacchetti del pacchetto tf.js principale. [min] descrive dove forniamo file minimizzati oltre a file non minimizzati.
** Il nostro ingresso main
package.json punta a questo file.
*** La voce del nostro module
package.json punta a questo file.
Se stai utilizzando tensorflow.js tramite npm e stai utilizzando bundler, potrebbe essere necessario modificare la configurazione del bundler per assicurarti che possa consumare i moduli ES2017 o indirizzarlo a un'altra delle voci in out package.json.
@tensorflow/tfjs-core è più sottile per impostazione predefinita
Per consentire un migliore scuotimento degli alberi non includiamo più l'API di concatenamento/fluente sui tensori per impostazione predefinita in @tensorflow/tfjs-core. Ti consigliamo di utilizzare direttamente le operazioni (ops) per ottenere il pacchetto più piccolo. Forniamo un'importazione di import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops';
che ripristina il concatenamento api.
Inoltre, per impostazione predefinita non registriamo più i gradienti per i kernel. Se desideri supporto per gradienti/formazione puoi import '@tensorflow/tfjs-core/dist/register_all_gradients';
Riorganizzazione del codice, registri del kernel e dei gradienti
Abbiamo riorganizzato il nostro codice per rendere più semplice sia contribuire con operazioni e kernel, sia implementare operazioni, kernel e gradienti personalizzati. Consulta questa guida per ulteriori informazioni .
Modifiche rivoluzionarie
Un elenco completo delle modifiche sostanziali è disponibile qui , ma include la rimozione di tutte le operazioni *Strict come mulStrict o addStrict.
Codice di aggiornamento da 2.x
Utenti di @tensorflow/tfjs
Risolvere eventuali modifiche importanti elencate qui ( https://github.com/tensorflow/tfjs/releases )
Utenti di @tensorflow/tfjs-core
Risolvi eventuali modifiche importanti elencate qui ( https://github.com/tensorflow/tfjs/releases ), quindi procedi come segue:
Aggiungi potenziatori operativi concatenati o utilizza direttamente le operazioni
Piuttosto che
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.
Devi fare
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();
Puoi anche importare tutte le API di concatenamento/fluente con la seguente importazione
import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops';
In alternativa puoi utilizzare direttamente l'operazione (potresti utilizzare anche qui le importazioni con nome)
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);
Importa il codice di inizializzazione
Se utilizzi esclusivamente importazioni con nome (invece di import * as ...
), in alcuni casi potrebbe essere necessario farlo
import @tensorflow/tfjs-core
vicino alla parte superiore del programma, questo impedisce agli scuotitori aggressivi di interrompere qualsiasi inizializzazione necessaria.
Codice di aggiornamento da 1.x
Utenti di @tensorflow/tfjs
Risolvere eventuali modifiche importanti elencate qui . Quindi seguire le istruzioni per l'aggiornamento da 2.x
Utenti di @tensorflow/tfjs-core
Risolvere eventuali modifiche importanti elencate qui , selezionare un backend come descritto di seguito e quindi seguire i passaggi per l'aggiornamento da 2.x
Selezione di uno o più backend
In TensorFlow.js 2.0 abbiamo rimosso i backend CPU e webgl nei rispettivi pacchetti. Vedi @tensorflow/tfjs-backend-cpu , @tensorflow/tfjs-backend-webgl , @tensorflow/tfjs-backend-wasm , @tensorflow/tfjs-backend-webgpu per istruzioni su come includere tali backend.