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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


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


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


640?wx_fmt=png&wxfrom=5&wx_lazy=1


在論文中,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.


要求


  • TensorFlow ( 訪問 http://www.tensorflow.org 了解如何安裝和升級)

  • NumPy (詳見 http://www.numpy.org/)

  • GPU


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


 

python layers_test.py


快速MNIST測試結果:


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

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


 

python experiment.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=cifar10 \
--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訓練命令:


 

python experiment.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科技大本營的目標更加明確,有更多的想法需要落地,不過目前對於營長來說是“現實跟不上靈魂的腳步”,因為缺人~~


所以,AI科技大本營要壯大隊伍了,現招聘AI記者和資深編譯,有意者請將簡歷投至:gulei@csdn.net,期待你的加入!


如果你暫時不能加入營長的隊伍,也歡迎與營長分享你的精彩文章,投稿郵箱:suiling@csdn.net


如果以上兩者你都參與不了,那就加入AI科技大本營的讀者群,成為營長的真愛粉兒吧!后台回復:讀者群,加入營長的大家庭,添加營長請備注自己的姓名,研究方向,營長邀請你入群。


640?wx_fmt=gif


640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png


☟☟☟點擊 | 閱讀原文 | 查看更多精彩內容


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: