Hinton开源CapsuleNet
當(dāng)前的深度學(xué)習(xí)理論是由Geoffrey?Hinton大神在2007年確立起來(lái)的,但是如今他卻認(rèn)為,“CNN的特征提取層與次抽樣層交叉存取,將相同類型的相鄰特征檢測(cè)器的輸出匯集到一起”是大有問(wèn)題的。
去年9月,在多倫多接受媒體采訪時(shí),Hinton大神斷然宣稱要放棄反向傳播,讓整個(gè)人工智能從頭再造。10月,人們關(guān)注已久的Hinton大神那篇Capsule論文"Dynamic Routing between Capsules"終于揭開(kāi)面紗。
在論文中,Capsule被Hinton大神定義為這樣一組神經(jīng)元:其活動(dòng)向量所表示的是特定實(shí)體類型的實(shí)例化參數(shù)。他的實(shí)驗(yàn)表明,鑒別式訓(xùn)練的多層Capsule系統(tǒng),在MNIST手寫數(shù)據(jù)集上表現(xiàn)出目前最先進(jìn)的性能,并且在識(shí)別高度重疊數(shù)字的效果要遠(yuǎn)好于CNN。
近日,該論文的一作Sara Sabour終于在GitHub上公開(kāi)了該論文中的代碼。該項(xiàng)目上線5天便獲得了217個(gè)Star,并被fork了14218次。下面讓我們一起來(lái)看看Sara Sabour開(kāi)源的代碼吧。
膠囊模型的代碼在以下論文中使用:
"Dynamic Routing between Capsules" by Sara Sabour, Nickolas Frosst, Geoffrey E. Hinton.
要求
-
TensorFlow (?訪問(wèn) http://www.tensorflow.org?了解如何安裝和升級(jí))
-
NumPy (詳見(jiàn)?http://www.numpy.org/)
-
GPU
運(yùn)行測(cè)試代碼驗(yàn)證設(shè)置是否正確,比如:
python layers_test.py
快速M(fèi)NIST測(cè)試結(jié)果:
-
從以下網(wǎng)址下載并提取MNIST記錄到 $DATA_DIR/:https://storage.googleapis.com/capsule_toronto/mnist_data.tar.gz
-
從以下網(wǎng)址下載并提取MNIST模型檢測(cè)點(diǎn)(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測(cè)試結(jié)果:
-
從以下網(wǎng)址下載并提取cifar10二進(jìn)制版本到$DATA_DIR/:
-
https://www.cs.toronto.edu/~kriz/cifar.html
-
從以下網(wǎng)址下載并提取cifar10模型檢測(cè)點(diǎn)(checkpoint)到$CKPT_DIR:
-
https://storage.googleapis.com/capsule_toronto/cifar_checkpoints.tar.gz
-
將提取的二進(jìn)制文件目錄作為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訓(xùn)練命令:
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完整訓(xùn)練命令:
python experiment.py --data_dir=$DATA_DIR/mnist_data/ --max_steps=300000\
--summary_dir=/tmp/attempt0/
Sample MNIST 基線訓(xùn)練命令:
python experiment.py --data_dir=$DATA_DIR/mnist_data/ --max_steps=300000\
--summary_dir=/tmp/attempt1/ --model=baseline
上述模型的訓(xùn)練期間在驗(yàn)證集上進(jìn)行測(cè)試
訓(xùn)練中連續(xù)運(yùn)行的注意事項(xiàng):
-
在訓(xùn)練中 --validate = true
-
總共需要總共2塊GPU:一個(gè)用于訓(xùn)練,一個(gè)用于驗(yàn)證
-
如果訓(xùn)練和驗(yàn)證工作位于同一臺(tái)機(jī)器上,則需要限制每個(gè)任務(wù)的RAM占用量,因?yàn)門ensorFlow會(huì)默認(rèn)為第一個(gè)任務(wù)分配所有的RAM,而第二個(gè)任務(wù)將無(wú)法進(jìn)行。
在MultiMNIST上測(cè)試/訓(xùn)練:
--num_targets = 2
--data_dir = $ DATA_DIR / multitest_6shifted_mnist.tfrecords@10
生成multiMNIST / MNIST記錄的代碼位于input_data / mnist / mnist_shift.py
生成multiMNIST測(cè)試分割的示例代碼:
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
總結(jié)
以上是生活随笔為你收集整理的Hinton开源CapsuleNet的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 区块链在供应链领域的应用
- 下一篇: 俞敏洪:如果创业者缺乏这8种能力,失败可