为了账号安全,请及时绑定邮箱和手机立即绑定

Keras 中的自定义 Hebbian 层实现 - 输入/输出暗淡和横向节点连接

Keras 中的自定义 Hebbian 层实现 - 输入/输出暗淡和横向节点连接

狐的传说 2021-09-28 14:12:15
我正在尝试使用 Keras 中的 Hebbian 更新来实现一个无监督的 ANN。我在这里找到了一个由 Dan Saunders 制作的自定义 Hebbian 层 - https://github.com/djsaunde/rinns_python/blob/master/hebbian/hebbian.py (我希望在这里询问关于另一个人的代码的问题不是糟糕的形式)在我发现在 repo 中使用此层的示例中,此层用作 Dense/Conv 层之间的中间层,但我想仅使用 Hebbian 层构建网络。在这个实现中,有两个关键的事情让我感到困惑:似乎输入暗淡和输出暗淡必须相同才能使该层正常工作。为什么会是这种情况,我该怎么做才能使它们与众不同?为什么权重矩阵的对角线设置为零?它说这是为了“确保没有神经元与自身横向连接”,但我认为连接权重在前一层和当前层之间,而不是当前层和自身之间。最初检查时,我希望该层能够从前一层获取输入,执行简单的激活计算(输入 * 权重),根据 Hebbian 更新更新权重(类似于 - 如果激活是高 b/t 节点,则增加权重),然后将激活传递到下一层。我还期望它能够处理从一层到下一层减少/增加节点数量的问题。相反,我似乎无法弄清楚为什么输入和输出亮度必须相同以及为什么权重矩阵的对角线设置为零。代码中的哪里(隐式或显式)是层需要具有相同暗淡的规范?代码中的哪里(隐式或显式)说明该层的权重矩阵将当前层连接到自身?抱歉,如果这个 Q 应该被分成 2,但似乎它们可能与 e/o 相关,所以我将它们保留为 1。如果需要,很乐意提供更多详细信息。编辑:意识到我忘记添加当我尝试创建一个输出暗淡与输入暗淡不同的图层时收到的错误消息:model = Sequential()model.add(Hebbian(input_shape = (256,1), output_dim = 256))这编译没有错误^model = Sequential()model.add(Hebbian(input_shape = (256,1), output_dim = 24))这 ^ 抛出错误:IndexError: boolean index does not match indexed array along Dimension 0; 维度是 256 但对应的布尔维度是 24
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信