У меня есть некоторые данные 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 при пакетной обработке данных.
Было бы так полезно, если бы кто-нибудь знал, как:
Генерация модели для части данного анзаца, а не непосредственно для данных
Создание пользовательской функции потерь, которая принимает дополнительные входные данные и работает с дозированием
Большое спасибо! :)