Я относительно новичок в машинном обучении и Python.
У меня есть система, которая состоит из NN, выход которого подается в неизвестную нелинейную функцию F, например, в некоторые аппаратные средства. Идея состоит в том, чтобы приучить NN быть обратной F ^ (- 1) этой неизвестной нелинейной функции F. Это означает, что потери L рассчитываются на выходе F. Однако обратное распространение не может быть использовано прямым способом для вычисления градиенты и обновление весов NN, потому что градиент F также не известен.
Есть ли способ, как использовать функцию потерь L, которая не связана напрямую с NN, для вычисления градиентов в TensorFlow или PyTorch? Или взять убыток, полученный с помощью любого другого программного обеспечения (Matlab, C, et c.), Использовать его для обратного распространения?
- Насколько я знаю, Keras keras.backend. Градиенты позволяют только вычислять градиенты по отношению к связанным весам, в противном случае градиент либо равен нулю, либо NoneType.
- Я читал о функции stop_gradient () в TensorFlow. Но я не уверен, что это то, что я ищу. Это позволяет не вычислять градиент относительно некоторых переменных при обратном распространении. Но я думаю, что операция F в любом случае не интерпретируется как переменная.
- Могу ли я определить любую произвольную функцию потерь (включая измерение аппаратных средств) и использовать ее для обратного распространения в TensorFlow или ее необходимо подключить к графику а также?
Пожалуйста, дайте мне знать, если мой вопрос недостаточно конкретизирован c.