Träna neuralt nätverk med anpassad förlustfunktion
Nu ska vi använda den anpassade förlustfunktionen vi nyss skapade. Det gör att vi kan styra modellens beteende på ett sätt som passar vårt specifika problem – målet är att tvinga modellen att åtminstone förutsäga prisutvecklingens riktning korrekt. Det enda vi behöver göra är att sätta argumentet loss i vår .compile()-funktion till funktionsnamnet sign_penalty. Vi undersöker sedan träningsförlusten igen för att kontrollera att den har planat ut.
Den här övningen är en del av kursen
Maskininlärning för finans i Python
Övningsinstruktioner
- Sätt
input_dimför det första lagret i det neurala nätverket till antalet kolumner iscaled_train_featuresmed hjälp av egenskapen.shape[1]. - Använd den anpassade förlustfunktionen
sign_penaltynär du anropar.compile()påmodel_2. - Rita upp förlusten från
historyefter träningen. Förlusten finns underhistory.history['loss'].
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()