肯塔·伊瓦薩基(Kenta Iwasaki)代表gram.ai的“膠囊之間的動態路由”中的capsnet體系結構的副本構建的副型Pytorch實現。
該模型的培訓是使用Torchnet進行的,使用MNIST數據集加載和使用Torchvision進行預處理。
膠囊是一組神經元,其活性向量代表特定類型實體(例如對像或對象部分)的實例化參數。我們使用活動向量的長度來表示實體存在的概率及其表示代表實例參數的方向。一個級別的活動膠囊通過轉換矩陣對高級膠囊的實例化參數進行預測。當多個預測一致時,較高的膠囊就會變得活躍。我們表明,經過區分訓練的多層膠囊系統可以在MNIST上實現最先進的性能,並且比識別高度重疊的數字要比卷積網絡要好得多。為了實現這些結果,我們使用劃分的迭代路由機制:低級膠囊更喜歡將其輸出發送到更高級別的膠囊,其活性向量具有很大的標量產品,其預測來自低級膠囊。
由Sara Sabour,Nicholas Frosst和Geoffrey E. Hinton撰寫的紙。有關更多信息,請在此處查看論文。
步驟1調整訓練時期,批量大小等capsule_network.py數量。
BATCH_SIZE = 100
NUM_CLASSES = 10
NUM_EPOCHS = 30
NUM_ROUTING_ITERATIONS = 3步驟2開始訓練。如果您尚未在腳本中運行的同一目錄中,則將下載MNIST數據集。確保運行vive Server!
$ sudo python3 -m visdom.server & python3 capsule_network.py 443rd時期的最高精度為99.7%。如下測試準確性/損失圖的趨勢所示,該模型可能達到更高的精度。

使用默認的Pytorch Adam優化器超級計,沒有學習率計劃。批處理大小為100的時期在帶有GTX 1050的剃須刀刀片上需要〜3分鐘,而NVIDIA TITAN XP上則需要〜2分鐘
主要引用了這兩種張量集和KERAS實現:
非常感謝 @innerpeace-wu對論文中概述的動態路由過程進行了討論。
Gram.ai目前正在大量開發多種AI模型,可以免費向社區免費發布或免費發布,因此為什麼我們不能保證對這項工作的完全支持。
但是,如果使用此實施的任何問題,或者您想以任何方式做出貢獻,請隨時發送電子郵件至[email protected]或在此存儲庫上打開新的GitHub問題。