我正在嘗試使用 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
添加回答
舉報
0/150
提交
取消