python - 在 Keras 的自定义层中计算梯度
问题描述
我在 Keras 的自定义层中编写了一个计算 Choquet 池的代码。在笔记本的 Colab 链接下方: https ://colab.research.google.com/drive/1lCrUb2Jm680JRnACPxWpxkOSkP_DlHGj 正如您可以在梯度计算中发生的代码崩溃一样,恰好在函数 custom_grad 内。这是不可能的,因为我返回 0 个渐变,其形状与前一层相同。所以我有两个问题:
- 在 Keras(或 Tensorflow 中)是一种计算层输入和输出之间梯度的方法吗?
- 如果我传递了一个与上一层形状相同的张量,但用 0 填充,为什么代码不起作用?
感谢您的关注,我正在等待您的帮助。提前致谢
解决方案
没有人对这个问题感兴趣。经过几次尝试,我找到了解决方案。问题在于,正如 Mainak431 在此 GitHub 存储库中发布的那样: link to diff and non-diff ops in tensorflow
TensorFlow 有可微分运算和不可微分运算。在 Colab 笔记本中,我使用了不可微分的 scatter_nd_update 作为示例。所以我建议,如果您想在 Keras 中创建自己的自定义层,请查看上面的列表,以便使用允许 Keras 为您自动区分的操作。无论如何,我正在努力为这个开放的研究课题提供尽可能多的信息。我记得对于神经网络,“乐高”是临界的,我确信你们中的许多人有兴趣在深度神经网络模型中添加你的操作(聚合或其他东西)。特别感谢 Maniak431,我爱你 <3
推荐阅读
- python - django:按成分搜索
- angular - 从数据库读取时未设置 formarray 中的 Mat-select 值
- amazon-s3 - 如何使用策略根据过滤条件删除 S3 文件夹?
- ios - AFNetworking 3.0 非英语(古吉拉特语/印地语),参数不起作用
- powerapps - 在电源应用程序中添加数据源时提示我请求的输入字段
- python - Selenium 开关选项卡
- php - Yii2中某些页面的布局相同
- python - 如何在 python 烧瓶的新选项卡中打开响应
- openedge - 如何通过减少以下代码来提高流程性能?
- apache-spark - 使用 Jackson 2.8 版的 Spark 应用程序与 Apache Spark 1.6 不兼容