TensorFlow

Iniziare con TensorFlow

Iniziare con TensorFlow
TensorFlow è il figlio del cervello di Google e, al suo interno, è una libreria per il calcolo numerico. È scritto in C/C++ e ha un'API molto flessibile. Questa API può essere interfacciata con un front-end Python in modo da poter scrivere piccoli frammenti di codice Python per risolvere problemi complicati. Un'API flessibile e coerente consente inoltre agli sviluppatori di utilizzare lo stesso codice front-end per l'esecuzione su varie piattaforme come GPU Nvidia, CPU generiche e persino dispositivi mobili e integrati, ognuno dei quali ha un'implementazione molto diversa nel back-end.

TensorFlow ha trovato un immenso utilizzo nel campo dell'apprendimento automatico, proprio perché l'apprendimento automatico comporta un sacco di calcoli numerici e viene utilizzato come tecnica di risoluzione dei problemi generalizzata. E sebbene interagiremo con esso usando Python, ha front-end per altri linguaggi come Go, Node.js e anche C#.

Tensorflow è come una scatola nera che nasconde tutte le sottigliezze matematiche al suo interno e lo sviluppatore chiama semplicemente le funzioni giuste per risolvere un problema. Ma che problema?

Apprendimento automatico (ML)

Supponiamo che tu stia progettando un bot per giocare a scacchi. A causa del modo in cui sono progettati gli scacchi, del modo in cui si muovono i pezzi e dell'obiettivo ben definito del gioco, è del tutto possibile scrivere un programma che giochi molto bene. In effetti, supererebbe in astuzia l'intera razza umana negli scacchi. Saprebbe esattamente quale mossa deve fare dato lo stato di tutti i pezzi sulla scacchiera.

Tuttavia, un tale programma può solo giocare a scacchi che. Le regole del gioco sono incorporate nella logica del codice e tutto ciò che fa il programma è eseguire quella logica in modo rigoroso e più accurato di quanto potrebbe fare qualsiasi essere umano. Non è un algoritmo generico che puoi usare per progettare qualsiasi bot di gioco.

Con l'apprendimento automatico, i cambiamenti di paradigma e gli algoritmi diventano sempre più generici.

L'idea è semplice, inizia definendo un problema di classificazione. Ad esempio, vuoi automatizzare il processo di identificazione delle specie di ragni. Le specie che ti sono note sono le varie classi (da non confondere con le classi tassonomiche) e lo scopo dell'algoritmo è ordinare una nuova immagine sconosciuta in una di queste classi.

Qui, il primo passo per l'umano sarebbe determinare le caratteristiche dei vari ragni individuali. Forniremmo dati sulla lunghezza, larghezza, massa corporea e colore dei singoli ragni insieme alle specie a cui appartengono:

Lunghezza Larghezza Massa Colore Struttura Specie
5 3 12 Marrone liscio Papà gambelunghe
10 8 28 Marrone nero peloso Tarantola

La disponibilità di una vasta raccolta di tali dati sui singoli spider verrà utilizzata per "addestrare" l'algoritmo e un altro set di dati simile verrà utilizzato per testare l'algoritmo per vedere se si comporta bene rispetto a nuove informazioni che non ha mai incontrato prima, ma di cui già conosciamo il rispondi a.

L'algoritmo partirà in modo casuale. Vale a dire, ogni ragno, indipendentemente dalle sue caratteristiche, sarebbe classificato come chiunque della specie. Se ci sono 10 specie diverse nel nostro set di dati, a questo algoritmo ingenuo verrebbe assegnata la classificazione corretta circa 1/10 delle volte a causa della pura fortuna.

Ma poi l'aspetto del machine learning comincerebbe a prendere il sopravvento. Comincerebbe ad associare determinate caratteristiche a determinati risultati. Ad esempio, è probabile che i ragni pelosi siano tarantole, così come i ragni più grandi larger. Quindi ogni volta che si presenta un nuovo ragno grande e peloso, gli verrà assegnata una probabilità maggiore di essere tarantola. Nota, stiamo ancora lavorando con le probabilità, questo perché stiamo intrinsecamente lavorando con un algoritmo probabilistico.

La parte di apprendimento funziona alterando le probabilità. Inizialmente, l'algoritmo inizia assegnando casualmente le etichette di una "specie" agli individui facendo correlazioni casuali come essere "peloso" ed essere "papà con le gambe lunghe". Quando crea una tale correlazione e il set di dati di addestramento non sembra essere d'accordo con essa, tale presupposto viene abbandonato.

Allo stesso modo, quando una correlazione funziona bene attraverso diversi esempi, diventa ogni volta più forte. Questo metodo per inciampare verso la verità è straordinariamente efficace, grazie a molte delle sottigliezze matematiche di cui, come principiante, non vorrai preoccuparti.

TensorFlow e addestrare il proprio classificatore di fiori

TensorFlow porta l'idea del machine learning ancora oltre. Nell'esempio sopra, eri incaricato di determinare le caratteristiche che distinguono una specie di ragno da un'altra. Abbiamo dovuto misurare accuratamente i singoli ragni e creare centinaia di tali record.

Ma possiamo fare di meglio, fornendo solo dati di immagine grezzi all'algoritmo, possiamo lasciare che l'algoritmo trovi modelli e capisca varie cose sull'immagine come riconoscere le forme nell'immagine, quindi capire qual è la trama delle diverse superfici, il colore , Così via. Questa è la nozione iniziale di computer vision e puoi usarla anche per altri tipi di input, come i segnali audio e l'addestramento del tuo algoritmo per il riconoscimento vocale. Tutto questo rientra nel termine ombrello di "Deep Learning" in cui l'apprendimento automatico viene portato al suo estremo logico.

Questo insieme generalizzato di nozioni può quindi essere specializzato quando si tratta di molte immagini di fiori e classificandole.

Nell'esempio seguente useremo un Python2.7 front-end per interfacciarsi con TensorFlow e utilizzeremo pip (non pip3) per installare TensorFlow. Il supporto per Python 3 è ancora un po' bacato.

Per creare il tuo classificatore di immagini, usando TensorFlow prima installiamolo usando pip:

$pip install tensorflow

Successivamente, dobbiamo clonare il tensorflow-per-poeti-2 git repository. Questo è davvero un buon punto di partenza per due motivi:

  1. È semplice e facile da usare
  2. Viene pre-addestrato in una certa misura. Ad esempio, il classificatore di fiori è già addestrato a capire quale trama sta guardando e quali forme sta guardando, quindi è computazionalmente meno intensivo.

Prendiamo il repository:

$git clone https://github.com/googlecodelabs/tensorflow-for-poets-2
$cd tensorflow-for-poets-2

Questa sarà la nostra directory di lavoro, quindi tutti i comandi dovrebbero essere emessi al suo interno, d'ora in poi.

Abbiamo ancora bisogno di addestrare l'algoritmo per il problema specifico del riconoscimento dei fiori, per questo abbiamo bisogno di dati di addestramento, quindi otteniamo che:

$curl http://download.flusso tensoriale.org/example_images/flower_photos.tgz
| tar xz -C tf_files

La rubrica.. ./tensorflow-for-poets-2/tf_files contiene una tonnellata di queste immagini adeguatamente etichettate e pronte per essere utilizzate. Le immagini avranno due scopi diversi:

  1. Formazione del programma ML
  2. Testare il programma ML

Puoi controllare il contenuto della cartella tf_files e qui scoprirai che ci stiamo restringendo a sole 5 categorie di fiori, vale a dire margherite, tulipani, girasoli, tarassaco e rose.

Addestrare il modello

È possibile avviare il processo di addestramento impostando prima le seguenti costanti per ridimensionare tutte le immagini di input in una dimensione standard e utilizzando un'architettura mobilenet leggera:

$IMAGE_SIZE=224
$ARCHITECTURE="mobilenet_0.50_$IMAGE_SIZE"

Quindi invoca lo script python eseguendo il comando:

$python -m script.riqualificarsi \
--bottleneck_dir=tf_files/bottlenecks \
--how_many_training_steps=500 \
--model_dir=tf_files/models/ \
--summaries_dir=tf_files/training_summaries/"$ARCHITETTURA" \
--output_graph=tf_files/retrained_graph.pb \
--output_labels=tf_files/retrained_labels.TXT \
--architettura="$ARCHITETTURA" \
--image_dir=tf_files/flower_photos

Sebbene ci siano molte opzioni specificate qui, la maggior parte di esse specifica le directory dei dati di input e il numero di iterazioni, nonché i file di output in cui verranno archiviate le informazioni sul nuovo modello. L'esecuzione non dovrebbe richiedere più di 20 minuti su un laptop mediocre.

Una volta che lo script ha terminato sia l'addestramento che il test, ti fornirà una stima dell'accuratezza del modello addestrato, che nel nostro caso era leggermente superiore al 90%.

Utilizzo del modello addestrato

Ora sei pronto per utilizzare questo modello per il riconoscimento dell'immagine di qualsiasi nuova immagine di un fiore. Useremo questa immagine:

La faccia del girasole è appena visibile e questa è una grande sfida per il nostro modello:

Per ottenere questa immagine da Wikimedia commons usa wget:

$wget https://upload.wikimedia.org/wikipedia/commons/2/28/Sunflower_head_2011_G1.jpg
$mv Sunflower_head_2011_G1.jpg tf_files/sconosciuto.jpg

Viene salvato come sconosciuto.jpg sotto il tf_files sottodirectory.

Ora, per il momento della verità, vedremo cosa ha da dire il nostro modello su questa immagine.Per farlo, invochiamo il label_image sceneggiatura:

$python -m script.label_image --graph=tf_files/retrained_graph.pb --
image=tf_files/sconosciuto.jpg

Otterresti un output simile a questo:

I numeri accanto al tipo di fiore rappresentano la probabilità che la nostra immagine sconosciuta appartenga a quella categoria. Ad esempio, è 98.04% certo che l'immagine è di un girasole ed è solo 1.37% di possibilità che sia una rosa.

Conclusione

Anche con risorse computazionali molto mediocri, stiamo assistendo a un'accuratezza sbalorditiva nell'identificazione delle immagini. Ciò dimostra chiaramente la potenza e la flessibilità di TensorFlow.

Da qui in poi, puoi iniziare a sperimentare vari altri tipi di input o provare a iniziare a scrivere la tua applicazione diversa usando Python e TensorFlow. Se vuoi conoscere un po' meglio il funzionamento interno dell'apprendimento automatico, ecco un modo interattivo per farlo.

Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...
Emula i clic del mouse passando il mouse utilizzando il mouse senza clic in Windows 10
L'uso di un mouse o di una tastiera nella postura sbagliata di un uso eccessivo può causare molti problemi di salute, tra cui tensione, sindrome del t...
Aggiungi i gesti del mouse a Windows 10 utilizzando questi strumenti gratuiti
Negli ultimi anni computer e sistemi operativi si sono notevolmente evoluti greatly. C'è stato un tempo in cui gli utenti dovevano usare i comandi per...