Вычислить градиенты в пользовательском слое в Keras - PullRequest
0 голосов
/ 29 января 2020

Я написал код, который вычисляет объединение Choquet в пользовательском слое в Keras. Ниже ссылки Colab на записную книжку: https://colab.research.google.com/drive/1lCrUb2Jm680JRnACPxWpxkOSkP_DlHGj Как вы можете, код падает при вычислении градиента именно внутри функции custom_grad. Это невозможно, потому что я возвращаю 0 градиентов той же формы, что и предыдущий слой. Итак, у меня есть 2 вопроса:

  • Есть ли в Керасе (или в Tensorflow) способ вычисления градиента между входом слоя и его выходом?
  • Если я передал Тензор с той же формы, что и в предыдущем слое, но заполнена нулями, почему код не работает?

Спасибо за ваше внимание, и я жду вашей помощи. Заранее спасибо

1 Ответ

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

Никто не заинтересован в этом вопросе. После нескольких испытаний я нашел решение. Проблема в том, что, как сообщает Mainak431 в этом репозитории GitHub: ссылка на операции diff и non-diff в тензорном потоке

Существуют дифференцируемые операции TensorFlow и недифференцируемые операции. В записной книжке Colab я использовал, в качестве примера, scatter_nd_update, который нельзя дифференцировать. Поэтому я предлагаю, если вы хотите создать свой собственный пользовательский слой в Keras, чтобы взглянуть на приведенные выше списки, чтобы использовать операции, которые позволяют Keras автоматически дифференцировать вас. В любом случае, я работаю над тем, чтобы как можно больше информировать об этом открытом исследовании topi c. Я помню, что с нейронной сетью «LE GO -ing» граничит, и я точно знаю, что многие из вас заинтересованы в добавлении ваших операций (агрегация или что-то еще) в модель глубокой нейронной сети. Отдельное спасибо Maniak431, я люблю тебя <3 </p>

...