首页 > 解决方案 > 在 Keras 的自定义层中计算梯度

问题描述

我在 Keras 的自定义层中编写了一个计算 Choquet 池的代码。在笔记本的 Colab 链接下方: https ://colab.research.google.com/drive/1lCrUb2Jm680JRnACPxWpxkOSkP_DlHGj 正如您可以在梯度计算中发生的代码崩溃一样,恰好在函数 custom_grad 内。这是不可能的,因为我返回 0 个渐变,其形状与前一层相同。所以我有两个问题:

感谢您的关注,我正在等待您的帮助。提前致谢

标签: pythontensorflowkerasgoogle-colaboratorykeras-layer

解决方案


没有人对这个问题感兴趣。经过几次尝试,我找到了解决方案。问题在于,正如 Mainak431 在此 GitHub 存储库中发布的那样: link to diff and non-diff ops in tensorflow

TensorFlow 有可微分运算和不可微分运算。在 Colab 笔记本中,我使用了不可微分的 scatter_nd_update 作为示例。所以我建议,如果您想在 Keras 中创建自己的自定义层,请查看上面的列表,以便使用允许 Keras 为您自动区分的操作。无论如何,我正在努力为这个开放的研究课题提供尽可能多的信息。我记得对于神经网络,“乐高”是临界的,我确信你们中的许多人有兴趣在深度神经网络模型中添加你的操作(聚合或其他东西)。特别感谢 Maniak431,我爱你 <3


推荐阅读