Прогноз Keras / Tensorflow, используемый в другой программе для расчета потерь - PullRequest
0 голосов
/ 09 января 2020

Я хочу попробовать конвейер, использующий Keras / Tensorflow с другой программой. Моя «очень профессиональная» диаграмма ниже показывает, что я пытаюсь выполнить sh

CNN с внешним программным конвейером

Вход для CNN - это 2D-матрица и вывод представляет собой двумерную матрицу с такими же размерами, что и входная матрица. Я хочу передать прогноз в отдельную программу, которая вычисляет новую 2D-матрицу, которая затем должна сравниваться с входной матрицей для расчета потерь.

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

Любые предложения очень ценятся!

1 Ответ

0 голосов
/ 09 января 2020

Короткий ответ: нет, в общем случае это невозможно. Это связано с тем, что CNN и любая нейронная сеть обучаются с использованием обратного распространения вместе с функцией потерь. Если вы хотите выполнить backprop, вам нужно знать процесс, который превратил вход x в выход y. Таким образом, вы можете вычислить градиент. Если вы используете программу «черного ящика» как часть уравнения, обратное преобразование становится невозможным.

Несколько возможных предложений.

  • Если это выполнимо, вы можете приучить конвоя net к эмулируйте программу «черный ящик», и тогда ее можно будет использовать как часть обучения.
  • Вы можете выполнить некоторую другую форму оптимизации, которая работает без градиентов / работает с функциями потери черного ящика.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...