Blog.

Keras: rete neurale con un layer e un neruone | Machine Learning


Autore
Andrea Provino
Data
Tempo di lettura
2 minuti
Categoria
Guide

equazione-machine-learning-matematica-python-keras-neurone-artificiale

In questo post abbiamo visto come un semplice neurone artificiale, senza l’ausilio di librerie come tensorflow, possa risolvere problemi di intelligenza artificiale grazie al machine learning.

Oggi vediamo come realizzare nuovamente un semplice script di machine learning attraverso il supporto di keras, un’API ad alto livello che consente la veloce creazione di reti neurali.

Reality: starting point

Ogni progetto di machine learning ha origine da una determinata realtà contraddistinta da una serie di dati e da una legge, una relazione, nota o sconosciuta che regola i dati.

Questo è il nostro dataset di partenza:

[ input ] : [-2.0,-1.0, 0.0, 1.0, 2.0, 8.0, 12.0]
[output ] : [-9.0, -6.0, 0.0, 0.0, 3.0, 21.0, 33.0]

La relazione tra l’input e l’output è la seguente:

y = x*3 - 3

Ci troviamo nella situazione di conoscere la relazione tra i dati, ma potrebbe capitare, come spesso succede, che questa preziosa informazione sia assente. Non è un problema: qui entra in gioco l’intelligenza artificiale.

Con l’ausilio di tecniche quali il deep learning, o il machine learning, è possibile estrarre da una serie di dati, attraverso l’iterazione in un numero elevato di epoche (cicli), grazie anche a specifiche funzioni matematiche, la relazione che consente di fare previsioni dell’ouput su input non forniti nella fase di training.

Questo è quello che andremo a fare.

Script: using keras to desing a net

Per poter procedere, occore che keras si installato propriamente nel nostro ambiente di lavoro. Io, da anaconda Prompt digito:

pip install keras

Iniziamo a scrivere lo script.

Importiamo le librerie:

from tensorflow import keras
import numpy as np

Quindi creiamo la nostra rete neurale, fatta di un semplice neurone e un solo layer:

model = keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
model.compile(optimizer='sgd', loss='mean_squared_error')

Ora il nostro dataset:

x = np.array([-2.0,-1.0, 0.0, 1.0, 2.0, 8.0, 12.0], dtype=float)
y = np.array([-9.0, -6.0, 0.0, 0.0, 3.0, 21.0, 33.0], dtype=float)

Popoliamo il modello:

model.fit(x, y, epochs=500)

E proviamo a fare una predizione su un dato in input, il 9; l’output? Dovebbe essere 24:

print(model.predict([9.0]))

Eseguendo lo script, otteniamo:

[24.101503]

Ci piace!

Alla prossima!

Un caldo abbraccio, Andrea!


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum