Neurale netwerken met één laag
Om vertrouwd te raken met neurale netwerken is het handig om te beginnen met een eenvoudige benadering van een functie.
Je traint een neuraal netwerk om een mapping tussen een invoer, x, en een uitvoer, y, te benaderen. Ze zijn gerelateerd via de vierkantswortel-functie, dus \(y = \sqrt{x}\).
De invoervector x is al voor je gegeven. Je berekent eerst de vierkantswortel van x met Numpy’s sqrt()-functie en maakt zo de uitvoerserie y. Daarna maak je een eenvoudig neuraal netwerk en train je het netwerk op de x-serie.
Na het trainen plot je zowel de y-serie als de uitvoer van het neurale netwerk om te zien hoe goed het netwerk de vierkantswortelfunctie benadert.
De Sequential- en Dense-objecten uit de Keras-bibliotheek zijn ook beschikbaar in je werkruimte.
Deze oefening maakt deel uit van de cursus
Kwantitatief risicobeheer in Python
Oefeninstructies
- Maak de uitvoer-trainingswaarden met Numpy’s
sqrt()-functie. - Maak het neurale netwerk met één verborgen laag van 16 neuronen, één invoerwaarde en één uitvoerwaarde.
- Compileer en fit het neurale netwerk op de trainingswaarden, gedurende 100 epochs.
- Plot de trainingswaarden (in blauw) tegenover de voorspelde waarden van het neurale netwerk.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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()