Dopasowanie sieci neuronowej z własną funkcją straty
Teraz skorzystamy z własnej funkcji straty, którą przed chwilą stworzyliśmy. Dzięki temu możemy wpłynąć na zachowanie modelu w sposób dostosowany do naszego problemu – model będzie starał się przynajmniej poprawnie przewidywać kierunek zmiany ceny. Wystarczy, że ustawimy argument loss w funkcji .compile() na nazwę naszej funkcji: sign_penalty. Na koniec ponownie sprawdzimy stratę treningową, żeby upewnić się, że przestała maleć.
To ćwiczenie jest częścią kursu
Uczenie maszynowe w finansach z Pythonem
Instrukcje do ćwiczenia
- Ustaw
input_dimpierwszej warstwy sieci neuronowej na liczbę kolumn tablicyscaled_train_features, korzystając z właściwości.shape[1]. - Użyj własnej funkcji straty
sign_penaltyw wywołaniu.compile()dla modelumodel_2. - Narysuj wykres straty na podstawie obiektu
historyzwróconego przez metodęfit. Wartości straty znajdziesz pod kluczemhistory.history['loss'].
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Create the model
model_2 = Sequential()
model_2.add(Dense(100, input_dim=____, activation='relu'))
model_2.add(Dense(20, activation='relu'))
model_2.add(Dense(1, activation='linear'))
# Fit the model with our custom 'sign_penalty' loss function
model_2.compile(optimizer='adam', loss=____)
history = model_2.fit(scaled_train_features, train_targets, epochs=25)
plt.plot(____)
plt.title('loss:' + str(round(history.history['loss'][-1], 6)))
plt.show()