我正在嘗試使用 Keras 中的 Hebbian 更新來實(shí)現(xiàn)一個(gè)無監(jiān)督的 ANN。我在這里找到了一個(gè)由 Dan Saunders 制作的自定義 Hebbian 層 - https://github.com/djsaunde/rinns_python/blob/master/hebbian/hebbian.py (我希望在這里詢問關(guān)于另一個(gè)人的代碼的問題不是糟糕的形式)在我發(fā)現(xiàn)在 repo 中使用此層的示例中,此層用作 Dense/Conv 層之間的中間層,但我想僅使用 Hebbian 層構(gòu)建網(wǎng)絡(luò)。在這個(gè)實(shí)現(xiàn)中,有兩個(gè)關(guān)鍵的事情讓我感到困惑:似乎輸入暗淡和輸出暗淡必須相同才能使該層正常工作。為什么會(huì)是這種情況,我該怎么做才能使它們與眾不同?為什么權(quán)重矩陣的對(duì)角線設(shè)置為零?它說這是為了“確保沒有神經(jīng)元與自身橫向連接”,但我認(rèn)為連接權(quán)重在前一層和當(dāng)前層之間,而不是當(dāng)前層和自身之間。最初檢查時(shí),我希望該層能夠從前一層獲取輸入,執(zhí)行簡單的激活計(jì)算(輸入 * 權(quán)重),根據(jù) Hebbian 更新更新權(quán)重(類似于 - 如果激活是高 b/t 節(jié)點(diǎn),則增加權(quán)重),然后將激活傳遞到下一層。我還期望它能夠處理從一層到下一層減少/增加節(jié)點(diǎn)數(shù)量的問題。相反,我似乎無法弄清楚為什么輸入和輸出亮度必須相同以及為什么權(quán)重矩陣的對(duì)角線設(shè)置為零。代碼中的哪里(隱式或顯式)是層需要具有相同暗淡的規(guī)范?代碼中的哪里(隱式或顯式)說明該層的權(quán)重矩陣將當(dāng)前層連接到自身?抱歉,如果這個(gè) Q 應(yīng)該被分成 2,但似乎它們可能與 e/o 相關(guān),所以我將它們保留為 1。如果需要,很樂意提供更多詳細(xì)信息。編輯:意識(shí)到我忘記添加當(dāng)我嘗試創(chuàng)建一個(gè)輸出暗淡與輸入暗淡不同的圖層時(shí)收到的錯(cuò)誤消息:model = Sequential()model.add(Hebbian(input_shape = (256,1), output_dim = 256))這編譯沒有錯(cuò)誤^model = Sequential()model.add(Hebbian(input_shape = (256,1), output_dim = 24))這 ^ 拋出錯(cuò)誤:IndexError: boolean index does not match indexed array along Dimension 0; 維度是 256 但對(duì)應(yīng)的布爾維度是 24
添加回答
舉報(bào)
0/150
提交
取消