Tensorflow / Keras - использовать производную NN в функции потерь - PullRequest
1 голос
/ 18 февраля 2020

В настоящее время я оцениваю функцию синуса, используя тензор потока. Я хотел бы включить тот факт, что вторая производная синуса равна -sinus, добавив производный член в мою функцию потери. Я довольно новичок в тф. Мой текущий код выглядит следующим образом

import tensorflow as tf
import numpy as np

from tensorflow import keras
from numpy import random

# --- Settings
x_min = 0
x_max = 2*np.pi

n_train = 64
n_test = 64

# --- Generate dataset
x_train = random.uniform(x_min, x_max, n_train)
y_train = np.sin(x_train)

x_test = random.uniform(x_min, x_max, n_test)
y_test = np.sin(x_test)

# --- Create model
model = keras.Sequential()

model.add(keras.layers.Dense(64, activation="tanh"))
model.add(keras.layers.Dense(64, activation="tanh"))

model.add(keras.layers.Dense(1, activation="tanh"))

def custom_loss(y_true, y_pred):
    return keras.losses.mean_squared_error(y_true, y_pred)

# --- Configure learning process
model.compile(
        optimizer=keras.optimizers.Adam(0.01),
        loss=custom_loss,
        metrics=['MeanSquaredError'])

# --- Train from dataset
model.fit(x_train, y_train, epochs=100, batch_size=32, validation_data=(x_test, y_test))

model.evaluate(x_test, y_test)

В настоящее время функция custom_loss является просто обычной MSE. Я хотел бы включить производную NN-выхода по входу в точку x_test. Как я могу включить такой термин в мою функцию потери.

Я уже посмотрел несколько вопросов. Особенно этот вопрос выглядит похожим, но я не могу понять, как использовать ответ в моем примере кода. Спасибо за помощь.

...