Reti neurali a singolo strato
Per prendere confidenza con le reti neurali, è utile iniziare con una semplice applicazione di approssimazione di una funzione.
Allenerai una rete neurale per approssimare una mappatura tra un input, x, e un output, y. Sono collegati dalla funzione di radice quadrata, cioè \(y = \sqrt{x}\).
Il vettore di input x ti è già fornito. Per prima cosa calcolerai la radice quadrata di x usando la funzione sqrt() di Numpy, generando la serie di output y. Poi creerai una semplice rete neurale e allenerai la rete sulla serie x.
Dopo l’addestramento, tracerai sia la serie y sia l’output della rete neurale, per vedere quanto bene la rete approssima la funzione radice quadrata.
Gli oggetti Sequential e Dense della libreria Keras sono già disponibili nel tuo workspace.
Questo esercizio fa parte del corso
Gestione quantitativa del rischio in Python
Istruzioni dell'esercizio
- Crea i valori di training di output usando la funzione
sqrt()di Numpy. - Crea la rete neurale con un livello nascosto da 16 neuroni, un valore di input e un valore di output.
- Compila e addestra la rete neurale sui valori di training, per 100 epoche.
- Traccia i valori di training (in blu) rispetto ai valori predetti dalla rete neurale.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Create the training values from the square root function
y = np.____(x)
# Create the neural network
model = Sequential()
model.____(Dense(16, input_dim=1, activation='relu'))
model.____(____(1))
# Train the network
model.____(loss='mean_squared_error', optimizer='rmsprop')
model.____(x, y, epochs=100)
## Plot the resulting approximation and the training values
plt.plot(x, y, x, model.____(x))
plt.show()