Neuronales Netz mit benutzerdefinierter Verlustfunktion fitten
Jetzt verwenden wir die benutzerdefinierte Verlustfunktion, die wir gerade erstellt haben. Damit können wir das Verhalten des Modells auf nützliche Weise an unser Problem anpassen – es soll das Modell dazu bringen, zumindest die Bewegungsrichtung des Preises korrekt vorherzusagen. Alles, was wir jetzt tun müssen, ist, das Argument loss in unserer .compile()-Funktion auf unseren Funktionsnamen sign_penalty zu setzen. Wir schauen uns erneut den Trainingsverlust an, um sicherzustellen, dass er sich abgeflacht hat.
Diese Übung ist Teil des Kurses
<Kurs>Maschinelles Lernen für Finanzen in Python</Kurs>Übungsanweisungen
- Setze das
input_dimder ersten Schicht des neuronalen Netzes auf die Anzahl der Spalten vonscaled_train_featuresmit der Eigenschaft.shape[1]. - Verwende die benutzerdefinierte Verlustfunktion
sign_penalty, um unsermodel_2mit.compile()zu kompilieren. - Zeichne den Verlust aus der
historydes Fits. Der Verlust steht unterhistory.history['loss'].
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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()