Керас подгоняет нейронную сеть как коэффициент в заданной функциональной форме - PullRequest
0 голосов
/ 08 мая 2019

У меня есть некоторые данные y (x, Q ^ 2) для диапазона значений (x, Q ^ 2) и анзац для функциональной формы как

y_ansatz (x, Q ^ 2) = L (x, Q ^ 2) (1 + c (x) / Q ^ 2)

где L - известные значения.

Я хочу выполнить подгонку, где я ввожу (x, Q ^ 2, L (x, Q ^ 2)) и тренируюсь на y (x, Q ^ 2), чтобы получить c (x).

Я пытался использовать model.fit(), но это даст модель для всего y (x, Q ^ 2), а не только c (x), например,

inputs_train = np.stack((x_train, q2_train)).T

hist = model.fit(inputs_train, 
                 dat_train, 
                 batch_size= 32, 
                 epochs=10000, 
                 shuffle=True, 
                 verbose=1,
                 callbacks=[es, mc],
                 validation_data=(inputs_val, dat_val))

Я также хочу использовать пользовательскую функцию потерь, схематично

потеря = (1 / N_данные) * (y_ansatz - y_true) @ mat @ (y_ansatz-y_true)

где mat - матрица N_data by N_data, но в keras вы можете только передать y_pred и y_true в пользовательскую функцию потерь. Другие темы решали эту проблему, например, Keras Пользовательская функция потерь для передачи аргументов, отличных от y_true и y_pred , но я не знаю, как обеспечить выбор правильных элементов mat при пакетной обработке данных.

Было бы так полезно, если бы кто-нибудь знал, как:

  1. Генерация модели для части данного анзаца, а не непосредственно для данных

  2. Создание пользовательской функции потерь, которая принимает дополнительные входные данные и работает с дозированием

Большое спасибо! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...