Molto utilizzato da data scientist, sviluppatori di software ed educatori, TensorFlow è una piattaforma open source per l'apprendimento automatico che utilizza grafici di flusso di dati. I nodi nel grafico rappresentano operazioni matematiche, mentre le connessioni del grafico rappresentano gli array di dati multidimensionali (tensori) che scorrono tra di loro.
Questa architettura flessibile consente di descrivere gli algoritmi di apprendimento automatico come un grafico di operazioni connesse. Possono essere addestrati ed eseguiti su GPU, CPU e TPU su varie piattaforme senza riscrivere il codice, dai dispositivi portatili ai desktop ai server di fascia alta.
Ciò significa che i programmatori possono utilizzare gli stessi set di strumenti per collaborare, aumentando notevolmente la loro efficienza. Sviluppato inizialmente dal Google Brain Team allo scopo di condurre ricerche sull'apprendimento automatico e sulle reti neurali profonde (DNN), il sistema è sufficientemente generale da essere applicabile anche in un'ampia varietà di altri domini.
Esistono tre parti distinte che definiscono il flusso di lavoro di TensorFlow, vale a dire la pre elaborazione dei dati, la creazione del modello e l'addestramento del modello per effettuare previsioni.
Il framework immette i dati come un array multidimensionale chiamato tensore e li esegue in due modi diversi. Il metodo principale consiste nella creazione di un grafico computazionale che definisce un flusso di dati per l'addestramento del modello.
Il secondo metodo, spesso più intuitivo, utilizza l'esecuzione desiderata, che segue i principi di programmazione imperativi e valuta in modo immediato le operazioni.
Utilizzando l'architettura TensorFlow, la formazione viene generalmente eseguita su un desktop o in un data center. In entrambi i casi, il processo viene accelerato posizionando i tensori sulla GPU. I modelli addestrati possono quindi essere eseguiti su una vasta gamma di piattaforme, dal desktop ai dispositivi mobile fino al cloud.
TensorFlow contiene anche molte funzioni di supporto. Ad esempio, TensorBoard, che consente agli utenti di monitorare visivamente il processo di addestramento, i grafici computazionali sottostanti e le metriche ai fini del debug delle esecuzioni e della valutazione delle prestazioni del modello. Tensor Board è il framework di visualizzazione unificato per Tensorflow e Keras.
Keras è un'API di alto livello che viene eseguita su TensorFlow. Keras promuove le astrazioni di TensorFlow fornendo un'API semplificata destinata alla creazione di modelli per casi d'uso comuni. La base dell'API è quella di poter tradurre da una piccola informazione un risultato nel minor tempo possibile.
Tensorflow raggruppa insieme modelli e algoritmi di Machine Learning e Deep Learning. Usa Python come un comodo front-end e lo esegue in modo efficiente in C++ ottimizzato.
Partiamo dal principio che tutte le operazioni associate a TensorFlow avvengano tramite l'uso di tensori.
Un tensore è un vettore/matrice di n dimensioni che rappresenta i tipi di dati. I valori in un tensore contengono tipi di dati identici con una forma nota. Questa forma è la dimensionalità della matrice.
Un vettore è un tensore unidimensionale;
Una matrice un tensore bidimensionale.
Ovviamente, uno scalare è un tensore a dimensione zero.
Nel grafico, i calcoli sono resi possibili attraverso interconnessioni di tensori. Le operazioni matematiche sono svolte dal nodo del tensore mentre le relazioni input-output tra i nodi sono spiegate da un connessione (edge) del tensore.
Adesso che conosciamo bene cos’è Tensorflow è chiaro che il nome deriva direttamente dal suo componente principale: Un tensore.
Vediamo quali sono le caratteristiche che gli appartengono:
Forma: La forma è la dimensionalità della matrice. Per esempio una matrice bidimensionale equivale a dire [2,2].
Ranks: sono il numero di dimensioni utilizzate per rappresentare i dati.
Esempio: Rank 0 - Quando c'è un solo elemento. Chiamato anche scalare. Quindi s = [2000]
Tipo: Rappresenta il tipo di dati (interi, stringhe, valori a virgola mobile, ecc.). Tutti i valori in un tensore contengono lo stesso tipo di dati.
Grafico: è un insieme di calcoli che avviene successivamente sui tensori di input. Fondamentalmente, un grafico è solo una disposizione di nodi che rappresentano le operazioni nel modello.
Sessione: Session incapsula l'ambiente in cui avviene la valutazione del grafico.
Operatori: Gli operatori sono operazioni matematiche di base predefinite.
Quando abbiamo i dati memorizzati nei tensori, vi sono operazioni che devono essere eseguite, cosa che avviene sotto forma di grafici.
A differenza della programmazione tradizionale, in cui il codice scritto viene eseguito in sequenza, qui costruiamo grafici del flusso di dati costituiti da nodi. I grafici vengono quindi eseguiti sotto forma di sessione.
È importante ricordare che dobbiamo prima creare un grafico. Quando lo facciamo, nessuno codice viene effettivamente eseguito. Esegui quel grafico solo creando una sessione.
Quando inizi a creare un oggetto TensorFlow, ci sarà un grafico predefinito. Nella programmazione più avanzata, puoi effettivamente avere più grafici invece di un grafico predefinito. Il grafico viene eseguito ed elabora tutti i dati immessi. Tutti i dati esterni vengono alimentati sotto forma di placeholders, variabili e costanti.
In particolare i placeholders ci consentono di inviare dati a un modello TensorFlow dall'esterno.
Una volta che hai il grafico, l'esecuzione può essere abilitata su CPU o GPU normali o distribuita su più di esse in modo che l'elaborazione diventi molto più veloce. Poiché l'addestramento dei modelli in deep learning richiede molto tempo a causa della grande quantità di dati, l'utilizzo di TensorFlow rende molto più semplice scrivere il codice per GPU o CPU e quindi eseguirlo in modo distribuito.
Quando si crea una sessione, si esegue un calcolo, un nodo o un'operazione particolare.
Ogni variabile o calcolo che esegui è come un'operazione su un nodo all'interno di un grafico. Inizialmente, il grafico sarà quello predefinito. Nel momento in cui crei un oggetto TensorFlow, è presente un grafico predefinito che non contiene operazioni o nodi. Nel momento in cui si assegnano variabili, costanti o placeholders, ognuno di essi è noto come un'operazione (in termini di TensorFlow).
Ciò è in contrasto con i concetti tradizionali, in cui la creazione di una costante o di una variabile non è un'operazione. Ma in TensorFlow, anche l'assegnazione di variabili o costanti è un'operazione. Durante una sessione, puoi effettivamente eseguire tutte queste operazioni o nodi.
Elaborazione di immagini e rilevamento video. Il gigante della produzione di aeroplani Airbus sta utilizzando TensorFlow per estrarre e analizzare le informazioni dalle immagini satellitari per fornire preziose informazioni in tempo reale ai clienti.
Modellazione. Utilizzando TensorFlow per il deep transfer learning e la modellazione generativa, PayPal è stata in grado di riconoscere schemi di frode complessi e temporaneamente variabili, migliorando al contempo l'esperienza dei clienti legittimi attraverso l'identificazione rapida dei clienti.
Priorità dei tweet. Twitter ha utilizzato TensorFlow per costruire la sua cronologia classificata, assicurando che gli utenti non perdano i loro tweet più importanti, anche quando seguono migliaia di utenti.
TensorFlow ha reso molto più semplice l'implementazione di modelli di machine learning e deep learning. Le API native nella libreria sono sviluppate in linguaggio Python, C, Java, Go e Rust.
In un prossimo articolo vediamo come implementare un modello con TensorFlow.