[[219212]]
AI 研习社消息,代码相信大家对于「深度学习教父」Geoffery Hinton 在去年年底发表的谷歌胶囊网络还记忆犹新,在论文 Dynamic Routing between Capsules 中,正式Hinton 团队提出了一种全新的开源网络结构。为了避免网络结构的胶囊即刻杂乱无章,他们提出把关注同一个类别或者同一个属性的理论神经元打包集合在一起,好像胶囊一样。代码在神经网络工作时,谷歌这些胶囊间的正式通路形成稀疏激活的树状结构(整个树中只有部分路径上的胶囊被激活)。这样一来,开源Capsule 也就具有更好的解释性。
在实验结果上,CapsNet 在数字识别和健壮性上都取得了不错的效果。详情可以参见 终于盼来了Hinton的Capsule新论文,它能开启深度神经网络的新时代吗?
日前,该论文的第一作者 Sara Sabour 在 GitHub 上公布了论文代码,大家可以马上动手实践起来。雷锋网 AI 研习社将教程编译整理如下:
TensorFlow(点击 http://www.tensorflow.org 进行安装或升级)
NumPy (详情点击 http://www.numpy.org/ )
GPU
python layers_test.py
下载并提取 MNIST tfrecord 到 $DATA_DIR/ 下:
https://storage.googleapis.com/capsule_toronto/mnist_data.tar.gz
下载并提取 MNIST 模型 checkpoint 到 $CKPT_DIR 下:
https://storage.googleapis.com/capsule_toronto/mnist_checkpoints.tar.gz
python experiment.py --data_dir=$DATA_DIR/mnist_data/ --train=false \ --summary_dir=/tmp/ --checkpoint=$CKPT_DIR/mnist_checkpoint/model.ckpt-1
下载并提取 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
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/
也可以执行--validate=true as well 在训练-测试集上训练
执行 --num_gpus=NUM_GPUS 在多块GPU上训练
python experiment.py --data_dir=$DATA_DIR/mnist_data/ --max_steps=300000\ --summary_dir=/tmp/attempt0/
python experiment.py --data_dir=$DATA_DIR/mnist_data/ --max_steps=300000\ --summary_dir=/tmp/attempt1/ --model=baseline
To test on validation during training of the above model:
在训练时执行 --validate=true 也一样
可能需要两块 GPU,一块用于训练集,一块用于验证集
如果所有的测试都在一台机器上,你需要对训练集、验证集的测试中限制 RAM 消耗。如果不这样,TensorFlow 会在一开始占用所有的 RAM,这样就不能执行其他工作了
python experiment.py --data_dir=$DATA_DIR/mnist_data/ --max_steps=300000\ --summary_dir=/tmp/attempt0/ --train=false --validate=true
大家可以通过 --num_targets=2 和 --data_dir=$DATA_DIR/multitest_6shifted_mnist.tfrecords@10 在 MultiMNIST 上进行测试或训练,生成 multiMNIST/MNIST 记录的代码在 input_data/mnist/mnist_shift.py 目录下。
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
可以通过 --shift=6 --pad=6 来构造 affNIST expanded_mnist
论文地址: https://arxiv.org/pdf/1710.09829.pdf
GitHub 地址: https://github.com/Sarasra/models/tree/master/research/capsules
责任编辑:张燕妮 来源: 雷锋网 谷歌开源 TensorFlow
(责任编辑:休闲)
大朋E3《Beat Saber》独门试玩:沉迷VR只需一个游戏
鑫科材料(600255.SH):向激励对象授予股票期权4969万份 行权价格为2.38元/份