在Keras中的自定义图层中计算渐变

时间:2020-01-29 19:00:06

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

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

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

感谢您的关注,我们正在等待您的帮助。 预先感谢

1 个答案:

答案 0 :(得分:1)

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

存在可区分的TensorFlow操作和不可区分的操作。在Colab笔记本中,我使用了不可微分的scatter_nd_update作为示例。 因此,我建议,如果您想在Keras中创建自己的“自定义图层”以查看上面的列表,以便使用允许Keras为您自动区分的操作。 无论如何,我正在努力使其尽可能多地了解该开放式研究主题。我记得在神经网络中“ LEGO-ing”是临界点,并且我确定你们中的许多人都对在深度神经网络模型中添加操作(聚合或其他操作)感兴趣。 特别感谢Maniak431,我爱你<3

相关问题