當前位置:
首頁 > 最新 > Hinton膠囊理論代碼開源,上線即受熱捧

Hinton膠囊理論代碼開源,上線即受熱捧

當前的深度學習理論是由GeoffreyHinton大神在2007年確立起來的,但是如今他卻認為,「CNN的特徵提取層與次抽樣層交叉存取,將相同類型的相鄰特徵檢測器的輸出彙集到一起」是大有問題的。

去年9月,在多倫多接受媒體採訪時,Hinton大神斷然宣稱要放棄反向傳播,讓整個人工智慧從頭再造。10月,人們關注已久的Hinton大神那篇Capsule論文"Dynamic Routing between Capsules"終於揭開面紗。

在論文中,Capsule被Hinton大神定義為這樣一組神經元:其活動向量所表示的是特定實體類型的實例化參數。他的實驗表明,鑒別式訓練的多層Capsule系統,在MNIST手寫數據集上表現出目前最先進的性能,並且在識別高度重疊數字的效果要遠好於CNN。

近日,該論文的一作Sara Sabour終於在GitHub上公開了該論文中的代碼。該項目上線5天便獲得了217個Star,並被fork了14218次。下面讓我們一起來看看Sara Sabour開源的代碼吧。

膠囊模型的代碼在以下論文中使用:

"Dynamic Routing between Capsules" by Sara Sabour, Nickolas Frosst, Geoffrey E. Hinton.

要求

運行測試代碼驗證設置是否正確,比如:

pythonlayers_test.py

快速MNIST測試結果:

從以下網址下載並提取MNIST記錄到 $DATA_DIR/:https://storage.googleapis.com/capsule_toronto/mnist_data.tar.gz

從以下網址下載並提取MNIST模型檢測點(checkpoint)到$CKPT_DIR:

pythonexperiment.py --data_dir=$DATA_DIR/mnist_data/ --train=false

--summary_dir=/tmp/ --

checkpoint=$CKPT_DIR/mnist_checkpoint/model.ckpt-1

快速CIFAR10 ensemble測試結果:

從以下網址下載並提取cifar10二進位版本到$DATA_DIR/:

https://www.cs.toronto.edu/~kriz/cifar.html

從以下網址下載並提取cifar10模型檢測點(checkpoint)到$CKPT_DIR:

https://storage.googleapis.com/capsule_toronto/cifar_checkpoints.tar.gz

將提取的二進位文件目錄作為data_dir傳遞給($DATA_DIR)

python experiment.py --data_dir=$DATA_DIR --train=false--dataset=cifar1

--hparams_override=num_prime_capsules=64,padding=SAME,leaky=true,remake=false

--summary_dir=/tmp/--checkpoint=$CKPT_DIR/cifar/cifar{}/model.ckpt-600000

--num_trials=7

Sample CIFAR10訓練命令:

pythonexperiment.py --data_dir=$DATA_DIR--dataset=cifar10 --max_steps=600000

--hparams_override=num_prime_capsules=64,padding=SAME,leaky=true,remake=false

--summary_dir=/tmp/

Sample MNIST完整訓練命令:

python experiment.py --data_dir=$DATA_DIR/mnist_data/--max_steps=300000

--summary_dir=/tmp/attempt0/

Sample MNIST 基線訓練命令:

python experiment.py --data_dir=$DATA_DIR/mnist_data/--max_steps=300000

--summary_dir=/tmp/attempt1/--model=baseline

上述模型的訓練期間在驗證集上進行測試

訓練中連續運行的注意事項:

在訓練中 --validate = true

總共需要總共2塊GPU:一個用於訓練,一個用於驗證

如果訓練和驗證工作位於同一台機器上,則需要限制每個任務的RAM佔用量,因為TensorFlow會默認為第一個任務分配所有的RAM,而第二個任務將無法進行。

在MultiMNIST上測試/訓練:

--num_targets=2

--data_dir= $ DATA_DIR / multitest_6shifted_mnist.tfrecords@10

生成multiMNIST / MNIST記錄的代碼位於input_data / mnist / mnist_shift.py

生成multiMNIST測試分割的示例代碼:

python mnist_shift.py --data_dir=$DATA_DIR/mnist_data/ --split=test--shift=6

--pad=4 --num_pairs=1000 --max_shard=100000 --multi_targets=true

為affNIST泛化能力建立expanded_mnist: --shift = 6;--pad = 6。

Github地址:

https://github.com/Sarasra/models/tree/master/research/capsules

論文地址:

https://arxiv.org/abs/1710.09829


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI科技大本營 的精彩文章:

出門問問李志飛:小米讓別人無路可走,我也要讓它走起來沒有那麼方便

TAG:AI科技大本營 |