【问题标题】:Compute gradients in a custom layer in Keras在 Keras 的自定义层中计算梯度
【发布时间】:2020-05-15 08:23:53
【问题描述】:

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

  • 是否在 Keras(或 Tensorflow)中计算层输入和输出之间的梯度?
  • 如果我传递了一个与上一层形状相同但填充为 0 的 Tensor,为什么代码不起作用?

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

【问题讨论】:

    标签: python tensorflow keras google-colaboratory keras-layer


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多