Aggiornamento a TensorFlow.js 3.0

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.

** La nostra voce 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 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 di alberi 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.