Ajusta una red neuronal con una función de pérdida personalizada
Ahora usaremos la función de pérdida personalizada que acabamos de crear. Esto nos permitirá modificar el comportamiento del modelo de formas útiles para nuestro problema: intentará forzar al modelo a aprender al menos a predecir correctamente la dirección del movimiento del precio. Lo único que tenemos que hacer ahora es establecer el argumento loss en nuestra función .compile() al nombre de nuestra función, sign_penalty. Volveremos a examinar la pérdida de entrenamiento para asegurarnos de que se ha estabilizado.
Este ejercicio forma parte del curso
Machine Learning para finanzas con Python
Instrucciones del ejercicio
- Establece el
input_dimde la primera capa de la red neuronal como el número de columnas descaled_train_featurescon la propiedad.shape[1]. - Usa la función de pérdida personalizada
sign_penaltypara hacer.compile()de nuestromodel_2. - Dibuja la pérdida a partir del
historydel ajuste. La pérdida está enhistory.history['loss'].
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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()