Ajuster un réseau de neurones avec une fonction de perte personnalisée
Nous allons maintenant utiliser la fonction de perte personnalisée que nous venons de créer. Cela nous permet de modifier le comportement du modèle de manière utile et spécifique à notre problème — il va chercher à amener le modèle à au moins prédire correctement le sens du mouvement du prix. Il nous suffit à présent de définir l'argument loss dans notre fonction .compile() avec le nom de notre fonction, sign_penalty. Nous examinerons à nouveau la perte d'entraînement pour vérifier qu'elle s'est stabilisée.
Cet exercice fait partie du cours
<cours>Machine Learning pour la finance en Python</cours>Instructions de l’exercice
- Définissez
input_dimde la première couche du réseau de neurones sur le nombre de colonnes descaled_train_featuresavec la propriété.shape[1]. - Utilisez la fonction de perte personnalisée
sign_penaltypour.compile()notremodel_2. - Tracez la perte depuis l'objet
historyde l'ajustement. La perte se trouve soushistory.history['loss'].
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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()