TensorFlow è una libreria Python per il calcolo numerico veloce creata e rilasciata da Google. In questo post scoprirai la libreria TensorFlow per Deep Learning.
È una libreria di base che può essere utilizzata per creare modelli di Deep Learning direttamente o utilizzando librerie wrapper che semplificano il processo basato su TensorFlow .
Cos'è TensorFlow?
Creata dal team di Google Brain e inizialmente rilasciata al pubblico nel 2015, TensorFlow è una libreria open source per il calcolo numerico e l'apprendimento automatico su larga scala. TensorFlow raggruppa una serie di modelli e algoritmi di machine learning e deep learning ( alias reti neurali ) e li rende utili tramite metafore programmatiche comuni. Utilizza Python o JavaScript per fornire una comoda API front-end per la creazione di applicazioni, mentre esegue tali applicazioni in C++ ad alte prestazioni.
TensorFlow, che compete con framework come PyTorch e Apache MXNet, può addestrare ed eseguire reti neurali profonde per la classificazione delle cifre scritte a mano, il riconoscimento di immagini, l'incorporamento di parole, le reti neurali ricorrenti, i modelli da sequenza a sequenza per la traduzione automatica, l'elaborazione del linguaggio naturale e Simulazioni basate su PDE (equazione differenziale parziale). Soprattutto, TensorFlow supporta la previsione della produzione su larga scala, con gli stessi modelli utilizzati per la formazione.
TensorFlow ha anche un'ampia libreria di modelli pre-addestrati che possono essere utilizzati nei propri progetti. Puoi anche utilizzare il codice di TensorFlow Model Garden
come esempi di best practice per addestrare i tuoi modelli.
Come funziona TensorFlow ?
TensorFlow consente agli sviluppatori di creare grafici del flusso di dati , strutture che descrivono come i dati si spostano attraverso un grafico o una serie di nodi di elaborazione. Ogni nodo nel grafico rappresenta un'operazione matematica e ogni connessione o spigolo tra i nodi è una matrice di dati multidimensionale, o tensore .
Le applicazioni TensorFlow possono essere eseguite sulla maggior parte di qualsiasi device : una macchina locale, un cluster nel cloud, dispositivi iOS e Android, CPU o GPU.
Se utilizzi il cloud di Google, puoi eseguire TensorFlow sul silicio TensorFlow Processing Unit (TPU) personalizzato di Google per un'ulteriore accelerazione. I modelli risultanti creati da TensorFlow, tuttavia, possono essere implementati sulla maggior parte dei dispositivi in cui verranno utilizzati per fornire previsioni.
TensorFlow 2.0, rilasciato nell'ottobre 2019, ha rinnovato il framework in molti modi in base al feedback degli utenti, per renderlo più semplice da utilizzare (ad esempio, utilizzando l' API Keras relativamente semplice per l'addestramento del modello) e più performante. La formazione distribuita è più facile da eseguire grazie a una nuova API e il supporto per TensorFlow Lite consente di distribuire modelli su una maggiore varietà di piattaforme. Tuttavia, il codice scritto per le versioni precedenti di TensorFlow deve essere riscritto, a volte solo leggermente, a volte in modo significativo, per sfruttare al massimo le nuove funzionalità di TensorFlow 2.0.
Utilizzare TensorFlow con Python
TensorFlow fornisce tutto questo al programmatore tramite il linguaggio Python. Python è facile da imparare e lavorare e fornisce modi convenienti per esprimere come le astrazioni di alto livello possono essere accoppiate insieme. TensorFlow è supportato su Python versioni da 3.7 a 3.10 e, sebbene possa funzionare su versioni precedenti di Python, non è garantito che lo faccia.
I nodi e i tensori in TensorFlow sono oggetti Python e le applicazioni TensorFlow sono esse stesse applicazioni Python. Le effettive operazioni matematiche, tuttavia, non vengono eseguite in Python. Le librerie di trasformazioni disponibili tramite TensorFlow sono scritte come binari C++ ad alte prestazioni. Python dirige semplicemente il traffico tra i pezzi e fornisce astrazioni di programmazione di alto livello per collegarli insieme.
Il lavoro di alto livello in TensorFlow, la creazione di nodi e livelli e il loro collegamento tra loro, utilizza la libreria Keras . L'API Keras è apparentemente semplice; un modello base con tre livelli può essere definito in meno di 10 righe di codice e il codice di addestramento per lo stesso richiede solo poche righe di codice in più. Ma se vuoi "sollevare il cofano" e fare un lavoro più fine, come scrivere il tuo ciclo di allenamento , puoi farlo.
Utilizzare TensorFlow con JavaScript
Python è il linguaggio più popolare per lavorare con TensorFlow e l'apprendimento automatico in generale. Ma JavaScript è ora anche un linguaggio di prima classe per TensorFlow e uno degli enormi vantaggi di JavaScript è che funziona ovunque ci sia un browser web.
TensorFlow.js, come viene chiamata la libreria JavaScript TensorFlow, utilizza l'API WebGL per accelerare i calcoli tramite qualsiasi GPU disponibile nel sistema. È anche possibile utilizzare un back-end WebAssembly per l'esecuzione ed è più veloce del normale back-end JavaScript se si esegue solo su una CPU, anche se è meglio utilizzare GPU quando possibile. I modelli predefiniti ti consentono di iniziare a lavorare con progetti semplici per darti un'idea di come funzionano le cose.
Cos'è TensorFlow Lite ?
I modelli TensorFlow addestrati possono anche essere implementati su dispositivi mobili o edge computing, come sistemi iOS o Android. Il set di strumenti TensorFlow Lite ottimizza i modelli TensorFlow per funzionare bene su tali dispositivi, consentendo di fare compromessi tra dimensioni e precisione del modello. Un modello più piccolo (vale a dire, 12 MB contro 25 MB, o anche 100+ MB) è meno accurato, ma la perdita di precisione è generalmente piccola e più che compensata dalla velocità e dall'efficienza energetica del modello.
Perché usare TensorFlow ?
Il più grande vantaggio offerto da TensorFlow per lo sviluppo del deep learning è l'astrazione . Invece di occuparsi dei dettagli essenziali dell'implementazione di algoritmi o di trovare modi corretti per collegare l'output di una funzione all'input di un'altra, lo sviluppatore può concentrarsi sulla logica generale dell'applicazione. TensorFlow si prende cura dei dettagli dietro le quinte.
TensorFlow offre ulteriori comodità per gli sviluppatori che hanno bisogno di eseguire il debug e ottenere un'introspezione nelle app TensorFlow. Ogni operazione sul grafico può essere valutata e modificata separatamente e in modo trasparente, invece di costruire l'intero grafico come un singolo oggetto opaco e valutarlo tutto in una volta. Questa cosiddetta "modalità di esecuzione desiderosa", fornita come opzione nelle versioni precedenti di TensorFlow, è ora standard.
La suite di visualizzazione TensorBoard ti consente di ispezionare e profilare il modo in cui i grafici vengono eseguiti tramite un dashboard interattivo basato sul Web. Un servizio, Tensorboard.dev (ospitato da Google), ti consente di ospitare e condividere esperimenti di machine learning scritti in TensorFlow. È gratuito con spazio di archiviazione per un massimo di 100 milioni di scalari, 1 GB di dati tensore e 1 GB di dati di oggetti binari. (Si noti che tutti i dati ospitati in Tensorboard.dev sono pubblici, quindi non utilizzarli per progetti sensibili.)
TensorFlow ottiene anche molti vantaggi dal sostegno di un gruppo commerciale di prima qualità su Google. Google ha alimentato il rapido ritmo di sviluppo alla base del progetto e ha creato molte offerte significative che semplificano l'implementazione e l'utilizzo di TensorFlow. Il suddetto silicio TPU per prestazioni accelerate nel cloud di Google è solo un esempio.
Come installare TensorFlow
L'installazione di TensorFlow è semplice se si dispone già di un ambiente Python SciPy.
TensorFlow funziona con Python 3.3+. È possibile seguire le istruzioni per il download e l'installazione sul sito Web di TensorFlow. L'installazione è probabilmente la più semplice tramite PyPI e le istruzioni specifiche del comando pip da utilizzare per la tua piattaforma Linux o Mac OS X si trovano nella pagina Web di download e configurazione. Nel caso più semplice, devi solo inserire quanto segue nella tua riga di comando:
pip install tensorflow
Un'eccezione sarebbe sul nuovo Mac con una CPU Apple Silicon. Il nome del pacchetto per questa specifica architettura è tensorflow-macos invece:
pip install tensorflow-macos
Ci sono anche virtualenv e immagini docker che puoi usare se preferisci.
Per utilizzare la GPU, è necessario che sia installato anche Cuda Toolkit.
Esempi in TensorFlow
Il calcolo è descritto in termini di flusso di dati e operazioni nella struttura di un grafo orientato.
Nodi (NODE) : i nodi eseguono il calcolo e hanno zero o più input e output. I dati che si spostano tra i nodi sono noti come tensori, che sono array multidimensionali di valori reali.
Bordi (EDGE): il grafico definisce il flusso di dati, ramificazioni, cicli e aggiornamenti allo stato. È possibile utilizzare bordi speciali per sincronizzare il comportamento all'interno del grafico, ad esempio in attesa del completamento del calcolo su un numero di input.
Operazione : un'operazione è un calcolo astratto denominato che può accettare attributi di input e produrre attributi di output. Ad esempio, è possibile definire un'operazione di aggiunta o moltiplicazione.
Calcolo con TensorFlow
Questo primo esempio è una versione modificata dell'esempio sul sito Web TensorFlow . Mostra come definire valori come tensori ed eseguire un'operazione.
import tensorflow as tf
a = tf.constant(10)
b = tf.constant(32)
print(a+b)
L'esecuzione di questo esempio mostra:
tf.Tensor(42, shape=(), dtype=int32)
Regressione lineare con TensorFlow
Il prossimo esempio deriva dall'introduzione nel tutorial di TensorFlow .
Questo esempio mostra come definire le variabili (ad es. W e b) così come le variabili che sono il risultato del calcolo (y).
Abbiamo la sensazione che TensorFlow separi la definizione e la dichiarazione del calcolo. Sotto, c'è la differenziazione automatica sotto il cofano. Quando utilizziamo la funzione mse_loss() per calcolare la differenza tra ye y_data, viene creato un grafico che collega il valore prodotto dalla funzione alle variabili TensorFlow We b. TensorFlow utilizza questo grafico per dedurre come aggiornare le variabili all'interno della funzione minimize().
import tensorflow as tf
import numpy as np
# Creiamo100 dati fittizzi x, y con NumPy, y = x * 0.1 + 0.3
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3
# Proviamo a trovare il valor di W e b che calcola y_data = W * x_data + b
W = tf.Variable(tf.random.normal([1]))
b = tf.Variable(tf.zeros([1]))
# Funzione per calcolare mean squared error tray_data e la y calcolata
def mse_loss():
y = W * x_data + b
loss = tf.reduce_mean(tf.square(y - y_data))
return loss
# Minimizziamo il mean squared errors.
optimizer = tf.keras.optimizers.Adam()
for step in range(5000):
optimizer.minimize(mse_loss, var_list=[W,b])
if step % 500 == 0:
print(step, W.numpy(), b.numpy())
# il best FIT è W: [0.1], b: [0.3]
L'esecuzione di questo esempio stampa il seguente output:
0 [-0.35913563] [0.001]
500 [-0.04056413] [0.3131764]
1000 [0.01548613] [0.3467598]
1500 [0.03492216] [0.3369852]
2000 [0.05408324] [0.32609695]
2500 [0.07121297] [0.316361]
3000 [0.08443557] [0.30884594]
3500 [0.09302785] [0.3039626]
4000 [0.09754606] [0.3013947]
4500 [0.09936733] [0.3003596]
Puoi saperne di più sulla meccanica di TensorFlow nella guida all'utilizzo di base .
TensorFlow contro PyTorch, CNTK e MXNet
TensorFlow compete con una sfilza di altri framework di apprendimento automatico. PyTorch, CNTK e MXNet sono tre framework principali che soddisfano molte delle stesse esigenze. Chiudiamo con una rapida occhiata a dove si distinguono e non sono all'altezza di TensorFlow:
PyTorch è costruito con Python e ha molte altre somiglianze con TensorFlow: componenti con accelerazione hardware sotto il cofano, un modello di sviluppo altamente interattivo che consente di lavorare in base al progetto e molti componenti utili già inclusi. PyTorch è generalmente una scelta migliore per lo sviluppo rapido di progetti che devono essere operativi in breve tempo, ma TensorFlow vince per progetti più grandi e flussi di lavoro più complessi.
CNTK , il Microsoft Cognitive Toolkit, è come TensorFlow nell'usare una struttura a grafo per descrivere il flusso di dati, ma si concentra principalmente sulla creazione di reti neurali di deep learning. CNTK gestisce più rapidamente molti lavori di rete neurale e dispone di un set più ampio di API (Python, C++, C#, Java). Ma attualmente non è facile da imparare o distribuire come TensorFlow. È inoltre disponibile solo con la licenza GNU GPL 3.0, mentre TensorFlow è disponibile con la licenza Apache più liberale. E CNTK non è sviluppato in modo così aggressivo; l'ultima major release risale al 2019.
Apache MXNet , adottato da Amazon come il principale framework di deep learning su AWS, può scalare in modo quasi lineare su più GPU e più macchine. MXNet supporta anche un'ampia gamma di API di linguaggio—Python, C++, Scala, R, JavaScript, Julia, Perl, Go—sebbene le sue API native non siano così piacevoli da lavorare come quelle di TensorFlow. Ha anche una comunità molto più piccola di utenti e sviluppatori.
Conclusione su TensorFlow la libreria Python per il Deep Learning
TensorFlow è uno strumento di intelligenza artificiale di primo piano e se vuoi lavorare nell'intelligenza artificiale o nell'apprendimento automatico, dovresti conoscerlo.
L'apprendimento automatico e l'intelligenza artificiale sono due esempi di applicazioni tecnologiche che stanno giocando un ruolo importante nel progresso mondiale. Cose che prima sembravano una trama di un film di fantascienza ora sono una realtà. L'apprendimento automatico influisce su tutti gli aspetti della nostra vita, dal suggerimento di film Netflix e assistenti virtuali alle auto a guida autonoma.
TensorFlow, la libreria open source è senza dubbio vantaggiosa per gli sviluppatori e gli aspiranti professionisti che lavorano su tecnologie basate sull'apprendimento automatico.
Diventare un Master nel campo del deep learning è uno dei compiti più difficili. Tuttavia, un grande ringraziamento a Google per lo sviluppo di un toolkit come TensorFlow, la raccolta di dati, la creazione di modelli e la previsione nel campo dell'apprendimento automatico è diventato più facile che mai grazie a TensorFlow e aiuta anche a ottimizzare le possibili tendenze, che in precedenza era uno dei lavori più impegnativi.
Risorse TensorFlow
Homepage ufficiale di TensorFlow
Progetto TensorFlow su GitHub
Esercitazioni su TensorFlow
Comments