Обучение нейронной сети с пользовательской функцией потерь
Теперь воспользуемся пользовательской функцией потерь, которую мы только что создали. Она позволит изменить поведение модели нужным нам образом: модель будет стараться правильно предсказывать хотя бы направление движения цены. Всё, что нужно сделать, — передать имя нашей функции sign_penalty в аргумент loss метода .compile(). Затем снова проверим значение потерь при обучении, чтобы убедиться, что кривая выровнялась.
Это упражнение является частью курса
Машинное обучение для финансов на Python
Инструкции к упражнению
- Задайте
input_dimпервого слоя нейронной сети равным количеству столбцовscaled_train_features, используя свойство.shape[1]. - Используйте пользовательскую функцию потерь
sign_penaltyпри вызове.compile()для моделиmodel_2. - Постройте график потерь на основе
historyобучения. Значения потерь хранятся вhistory.history['loss'].
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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()