Iniziamo questo tutorial con l'introduzione di TensorFlow:
Cos'è TensorFlow?
TensorFlow è una piattaforma end-to-end open source per la creazione di applicazioni di Machine Learning. È una libreria matematica simbolica che utilizza il flusso di dati e la programmazione differenziabili per eseguire vari compiti incentrati sull'addestramento e l'inferenza di reti neurali profonde. Consente agli sviluppatori di creare applicazioni di machine learning utilizzando vari strumenti, librerie e risorse della comunità.
Attualmente, la libreria di deep learning più famosa al mondo è TensorFlow di Google. Il prodotto Google utilizza l'apprendimento automatico in tutti i suoi prodotti per migliorare il motore di ricerca, la traduzione, i sottotitoli delle immagini o i consigli.
Per fare un esempio concreto, gli utenti di Google possono sperimentare una ricerca più veloce e raffinata con AI. Se l'utente digita una parola chiave nella barra di ricerca, Google fornisce un consiglio su quale potrebbe essere la parola successiva.
Google vuole utilizzare l'apprendimento automatico per sfruttare i suoi enormi set di dati per offrire agli utenti la migliore esperienza. Tre diversi gruppi utilizzano l'apprendimento automatico:
- Ricercatori
- Scienziati di dati
- Programmatori.
Possono tutti utilizzare lo stesso set di strumenti per collaborare tra loro e migliorare la loro efficienza.
Google non ha solo dati; hanno il computer più massiccio del mondo, quindi Tensor Flow è stato costruito per essere scalabile. TensorFlow è una libreria sviluppata da Google Brain Team per accelerare l'apprendimento automatico e la ricerca sulle reti neurali profonde.
È stato creato per funzionare su più CPU o GPU e persino su sistemi operativi mobili e ha diversi wrapper in diversi linguaggi come Python, C ++ o Java.
In questo tutorial di TensorFlow imparerai
- Cos'è TensorFlow?
- Storia di TensorFlow
- Come funziona TensorFlow
- Architettura TensorFlow
- Dove può correre Tensorflow?
- Introduzione ai componenti di TensorFlow
- Perché TensorFlow è popolare?
- Elenco di algoritmi prominenti supportati da TensorFlow
- Semplice esempio di TensorFlow
- Opzioni per caricare i dati in TensorFlow
- Crea pipeline Tensorflow
Storia di TensorFlow
Un paio di anni fa, il deep learning ha iniziato a sovraperformare tutti gli altri algoritmi di machine learning fornendo un'enorme quantità di dati. Google ha visto che potrebbe utilizzare queste reti neurali profonde per migliorare i suoi servizi:
- Gmail
- Foto
- Motore di ricerca di Google
Creano un framework chiamato Tensorflow per consentire a ricercatori e sviluppatori di lavorare insieme su un modello di intelligenza artificiale. Una volta sviluppato e ridimensionato, consente a molte persone di usarlo.
È stato reso pubblico per la prima volta alla fine del 2015, mentre la prima versione stabile è apparsa nel 2017. È open source con licenza Apache Open Source. Puoi usarlo, modificarlo e ridistribuire la versione modificata a pagamento senza pagare nulla a Google.
Successivamente, in questo tutorial sull'apprendimento approfondito di TensorFlow, impareremo l'architettura di TensorFlow e come funziona TensorFlow.
Come funziona TensorFlow
TensorFlow consente di creare grafici e strutture del flusso di dati per definire il modo in cui i dati si spostano attraverso un grafico prendendo gli input come un array multidimensionale chiamato Tensor. Consente di costruire un diagramma di flusso delle operazioni che possono essere eseguite su questi input, che va a un'estremità e arriva all'altra come output.
Architettura TensorFlow
L'architettura di Tensorflow funziona in tre parti:
- Pre-elaborazione dei dati
- Costruisci il modello
- Addestra e stima il modello
Si chiama Tensorflow perché accetta l'input come un array multidimensionale, noto anche come tensori . È possibile costruire una sorta di diagramma di flusso delle operazioni (chiamato Grafico) che si desidera eseguire su quell'input. L'input entra a un'estremità, quindi scorre attraverso questo sistema di operazioni multiple ed esce dall'altra estremità come output.
Questo è il motivo per cui si chiama TensorFlow perché il tensore entra scorre attraverso un elenco di operazioni e poi esce dall'altra parte.
Dove può correre Tensorflow?
È possibile classificare i requisiti hardware e software di TensorFlow in
Fase di sviluppo: questo è il momento in cui alleni la modalità. La formazione viene solitamente eseguita sul desktop o sul laptop.
Fase di esecuzione o fase di inferenza: una volta terminato l'addestramento, Tensorflow può essere eseguito su molte piattaforme diverse. Puoi eseguirlo
- Desktop con Windows, macOS o Linux
- Cloud come servizio web
- Dispositivi mobili come iOS e Android
Puoi addestrarlo su più macchine, quindi eseguirlo su una macchina diversa, una volta che hai il modello addestrato.
Il modello può essere addestrato e utilizzato su GPU e CPU. Le GPU sono state inizialmente progettate per i videogiochi. Alla fine del 2010, i ricercatori di Stanford hanno scoperto che la GPU era anche molto brava nelle operazioni con le matrici e nell'algebra, quindi le rende molto veloci per eseguire questo tipo di calcoli. L'apprendimento profondo si basa su molte moltiplicazioni di matrici. TensorFlow è molto veloce nel calcolare la moltiplicazione di matrici perché è scritto in C ++. Sebbene sia implementato in C ++, è possibile accedere a TensorFlow e controllarlo principalmente da altri linguaggi, Python.
Infine, una caratteristica significativa di TensorFlow è TensorBoard. Il TensorBoard consente di monitorare graficamente e visivamente cosa sta facendo TensorFlow.
Introduzione ai componenti di TensorFlow
Tensore
Il nome di Tensorflow deriva direttamente dal suo framework principale: Tensor . In Tensorflow, tutti i calcoli coinvolgono i tensori. Un tensore è un vettore o una matrice di n dimensioni che rappresenta tutti i tipi di dati. Tutti i valori in un tensore tengono identico tipo di dati con una nota (o parzialmente noto) forma . La forma dei dati è la dimensionalità della matrice o dell'array.
Un tensore può essere originato dai dati di input o dal risultato di un calcolo. In TensorFlow, tutte le operazioni sono condotte all'interno di un grafico . Il grafico è un insieme di calcoli che avviene successivamente. Ogni operazione è chiamata nodo operativo e sono collegate tra loro.
Il grafico delinea le operazioni e le connessioni tra i nodi. Tuttavia, non visualizza i valori. Il bordo dei nodi è il tensore, cioè un modo per popolare l'operazione con i dati.
Grafici
TensorFlow utilizza un framework grafico. Il grafico raccoglie e descrive tutti i calcoli di serie effettuati durante l'addestramento. Il grafico ha molti vantaggi:
- È stato fatto per funzionare su più CPU o GPU e persino sul sistema operativo mobile
- La portabilità del grafico permette di conservare i calcoli per un utilizzo immediato o successivo. Il grafico può essere salvato per essere eseguito in futuro.
- Tutti i calcoli nel grafico vengono eseguiti collegando insieme i tensori
- Un tensore ha un nodo e un bordo. Il nodo trasporta l'operazione matematica e produce output di endpoint. I bordi i bordi spiegano le relazioni di input / output tra i nodi.
Perché TensorFlow è popolare?
TensorFlow è la migliore libreria di tutte perché è progettata per essere accessibile a tutti. La libreria Tensorflow incorpora diverse API per creare un'architettura di apprendimento profondo su larga scala come CNN o RNN. TensorFlow si basa sul calcolo del grafico; consente allo sviluppatore di visualizzare la costruzione della rete neurale con Tensorboad. Questo strumento è utile per eseguire il debug del programma. Infine, Tensorflow è progettato per essere distribuito su larga scala. Funziona su CPU e GPU.
Tensorflow attira la più grande popolarità su GitHub rispetto all'altro framework di deep learning.
Elenco di algoritmi prominenti supportati da TensorFlow
Di seguito è riportato l'elenco degli algoritmi TensorFlow supportati:
Attualmente, TensorFlow 1.10 ha un'API integrata per:
- Regressione lineare: tf.estimator.LinearRegressor
- Classificazione: tf.estimator.LinearClassifier
- Classificazione del deep learning: tf.estimator.DNNClassifier
- Deep learning wipe and deep: tf.estimator.DNNLinearCombinedClassifier
- Regressione dell'albero booster: tf.estimator.BoostedTreesRegressor
- Classificazione dell'albero potenziata: tf.estimator.BoostedTreesClassifier
Semplice esempio di TensorFlow
import numpy as npimport tensorflow as tf
Nelle prime due righe di codice, abbiamo importato tensorflow come tf. Con Python, è pratica comune utilizzare un nome breve per una libreria. Il vantaggio è evitare di digitare il nome completo della libreria quando è necessario utilizzarla. Ad esempio, possiamo importare tensorflow come tf e chiamare tf quando vogliamo usare una funzione tensorflow
Esercitiamo il flusso di lavoro elementare di Tensorflow con semplici esempi di TensorFlow. Creiamo un grafico computazionale che moltiplica due numeri insieme.
Durante l'esempio, moltiplicheremo X_1 e X_2 insieme. Tensorflow creerà un nodo per connettere l'operazione. Nel nostro esempio, si chiama moltiplicare. Quando il grafico è determinato, i motori computazionali di Tensorflow si moltiplicheranno insieme X_1 e X_2.
Esempio di TensorFlow
Infine, eseguiremo una sessione TensorFlow che eseguirà il grafico computazionale con i valori di X_1 e X_2 e stamperà il risultato della moltiplicazione.
Definiamo i nodi di input X_1 e X_2. Quando creiamo un nodo in Tensorflow, dobbiamo scegliere che tipo di nodo creare. I nodi X1 e X2 saranno un nodo segnaposto. Il segnaposto assegna un nuovo valore ogni volta che effettuiamo un calcolo. Li creeremo come un nodo segnaposto di punti TF.
Passaggio 1: definire la variabile
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
Quando creiamo un nodo segnaposto, dobbiamo passare il tipo di dati che aggiungerà numeri qui in modo da poter utilizzare un tipo di dati a virgola mobile, usiamo tf.float32. Dobbiamo anche dare un nome a questo nodo. Questo nome verrà visualizzato quando guardiamo le visualizzazioni grafiche del nostro modello. Chiamiamo questo nodo X_1 passando un parametro chiamato nome con un valore di X_1 e ora definiamo X_2 allo stesso modo. X_2.
Passaggio 2: definire il calcolo
multiply = tf.multiply(X_1, X_2, name = "multiply")
Ora possiamo definire il nodo che esegue l'operazione di moltiplicazione. In Tensorflow possiamo farlo creando un nodo tf.multiply.
Passeremo i nodi X_1 e X_2 al nodo di moltiplicazione. Indica a tensorflow di collegare quei nodi nel grafo computazionale, quindi gli chiediamo di estrarre i valori da xey e moltiplicare il risultato. Diamo anche al nodo di moltiplicazione il nome moltiplicato. È l'intera definizione del nostro semplice grafico computazionale.
Passaggio 3: eseguire l'operazione
Per eseguire operazioni nel grafico, dobbiamo creare una sessione. In Tensorflow, è fatto da tf.Session (). Ora che abbiamo una sessione, possiamo chiedere alla sessione di eseguire operazioni sul nostro grafico computazionale chiamando session. Per eseguire il calcolo, dobbiamo usare run.
Quando viene eseguita l'operazione di addizione, vedrà che è necessario acquisire i valori dei nodi X_1 e X_2, quindi è necessario inserire anche i valori per X_1 e X_2. Possiamo farlo fornendo un parametro chiamato feed_dict. Passiamo il valore 1,2,3 per X_1 e 4,5,6 per X_2.
Stampiamo i risultati con print (result). Dovremmo vedere 4, 10 e 18 per 1x4, 2x5 e 3x6
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")multiply = tf.multiply(X_1, X_2, name = "multiply")with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
[ 4. 10. 18.]
Opzioni per caricare i dati in TensorFlow
Il primo passaggio prima di addestrare un algoritmo di apprendimento automatico è caricare i dati. Esistono due modi comuni per caricare i dati:
1. Carica i dati in memoria: è il metodo più semplice. Carichi tutti i tuoi dati in memoria come un singolo array. Puoi scrivere un codice Python. Queste righe di codice non sono correlate a Tensorflow.
2. Pipeline di dati Tensorflow. Tensorflow ha un'API integrata che ti aiuta a caricare i dati, eseguire l'operazione e alimentare facilmente l'algoritmo di apprendimento automatico. Questo metodo funziona molto bene soprattutto quando si dispone di un set di dati di grandi dimensioni. Ad esempio, i record di immagini sono noti per essere enormi e non rientrano nella memoria. La pipeline di dati gestisce la memoria da sola
Quale soluzione utilizzare?
Carica i dati in memoria
Se il tuo set di dati non è troppo grande, cioè meno di 10 gigabyte, puoi utilizzare il primo metodo. I dati possono entrare nella memoria. Puoi utilizzare una famosa libreria chiamata Pandas per importare file CSV. Imparerai di più sui panda nel prossimo tutorial.
Carica i dati con la pipeline Tensorflow
Il secondo metodo funziona meglio se si dispone di un set di dati di grandi dimensioni. Ad esempio, se hai un set di dati di 50 gigabyte e il tuo computer ha solo 16 gigabyte di memoria, la macchina andrà in crash.
In questa situazione, è necessario creare una pipeline Tensorflow. La pipeline caricherà i dati in batch o in piccoli blocchi. Ogni batch verrà inviato alla pipeline e sarà pronto per la formazione. La creazione di una pipeline è un'ottima soluzione perché consente di utilizzare il calcolo parallelo. Significa che Tensorflow addestrerà il modello su più CPU. Favorisce il calcolo e consente l'addestramento di potenti reti neurali.
Nei prossimi tutorial vedrai come costruire una pipeline significativa per alimentare la tua rete neurale.
In poche parole, se hai un dataset di piccole dimensioni, puoi caricare i dati in memoria con la libreria Pandas.
Se si dispone di un set di dati di grandi dimensioni e si desidera utilizzare più CPU, sarà più comodo lavorare con la pipeline Tensorflow.
Crea pipeline Tensorflow
Nell'esempio precedente, aggiungiamo manualmente tre valori per X_1 e X_2. Ora vedremo come caricare i dati su Tensorflow.
Passaggio 1) Crea i dati
Prima di tutto, usiamo la libreria numpy per generare due valori casuali.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0,8835775 0,23766977]]
Passaggio 2) Crea il segnaposto
Come nell'esempio precedente, creiamo un segnaposto con il nome X. Dobbiamo specificare esplicitamente la forma del tensore. Nel caso, caricheremo un array con solo due valori. Possiamo scrivere la forma come forma = [1,2]
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Passaggio 3) Definire il metodo del set di dati
successivamente, dobbiamo definire il set di dati in cui possiamo popolare il valore del segnaposto x. Dobbiamo utilizzare il metodo tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Passaggio 4) Crea la pipeline
Nel passaggio quattro, dobbiamo inizializzare la pipeline in cui fluiranno i dati. Dobbiamo creare un iteratore con make_initializable_iterator. Lo chiamiamo iteratore. Quindi dobbiamo chiamare questo iteratore per alimentare il prossimo batch di dati, get_next. Chiamiamo questo passaggio get_next. Tieni presente che nel nostro esempio è presente un solo batch di dati con solo due valori.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
Passaggio 5) Eseguire l'operazione
L'ultimo passaggio è simile all'esempio precedente. Iniziamo una sessione ed eseguiamo l'iteratore dell'operazione. Alimentiamo feed_dict con il valore generato da numpy. Questi due valori popoleranno il segnaposto x. Quindi eseguiamo get_next per stampare il risultato.
with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
Sommario
Significato di TensorFlow: TensorFlow è la più famosa libreria di deep learning degli ultimi anni. Un professionista che utilizza TensorFlow può costruire qualsiasi struttura di apprendimento profondo, come CNN, RNN o una semplice rete neurale artificiale.
TensorFlow è utilizzato principalmente da accademici, startup e grandi aziende. Google utilizza TensorFlow in quasi tutti i prodotti quotidiani di Google, inclusi Gmail, Photo e il motore di ricerca di Google.
Il team di Google Brain ha sviluppato TensorFlow per colmare il divario tra ricercatori e sviluppatori di prodotti. Nel 2015 hanno reso pubblico TensorFlow; sta rapidamente crescendo in popolarità. Al giorno d'oggi, TensorFlow è la libreria di deep learning con il maggior numero di repository su GitHub.
I professionisti usano Tensorflow perché è facile da implementare su larga scala. È progettato per funzionare nel cloud o su dispositivi mobili come iOs e Android.
Tensorflow funziona in una sessione. Ogni sessione è definita da un grafico con calcoli diversi. Un semplice esempio può essere moltiplicare per un numero. In Tensorflow, sono necessari tre passaggi:
- Definisci la variabile
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
- Definisci il calcolo
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Eseguire l'operazione
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
Una pratica comune in Tensorflow consiste nel creare una pipeline per caricare i dati. Se segui questi cinque passaggi, sarai in grado di caricare i dati su TensorFLow
- Crea i dati
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Crea il segnaposto
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Definisci il metodo del set di dati
dataset = tf.data.Dataset.from_tensor_slices(x)
- Crea la pipeline
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Eseguire il programma
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))