Jednowarstwowe sieci neuronowe
Aby swobodnie pracować z sieciami neuronowymi, warto zacząć od prostego przybliżenia funkcji.
Wytrenuj sieć neuronową, która przybliży odwzorowanie między wartością wejściową x a wyjściową y. Łączy je funkcja pierwiastka kwadratowego, czyli \(y = \sqrt{x}\).
Wektor wejściowy x jest już dostępny w środowisku. Najpierw oblicz pierwiastek kwadratowy z x za pomocą funkcji sqrt() z biblioteki NumPy, tworząc wyjściową serię y. Następnie zbuduj prostą sieć neuronową i wytrenuj ją na serii x.
Po zakończeniu treningu narysuj wykres zarówno serii y, jak i wartości przewidywanych przez sieć, aby zobaczyć, jak dobrze sieć przybliża funkcję pierwiastka kwadratowego.
Obiekty Sequential i Dense z biblioteki Keras są już dostępne w twoim środowisku.
To ćwiczenie jest częścią kursu
Ilościowe zarządzanie ryzykiem w Pythonie
Instrukcje do ćwiczenia
- Utwórz wyjściowe wartości treningowe, korzystając z funkcji
sqrt()z biblioteki NumPy. - Zbuduj sieć neuronową z jedną warstwą ukrytą złożoną z 16 neuronów, jedną wartością wejściową i jedną wartością wyjściową.
- Skompiluj sieć neuronową i dopasuj ją do wartości treningowych przez 100 epok.
- Narysuj wykres wartości treningowych (kolorem niebieskim) na tle wartości przewidywanych przez sieć neuronową.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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()