农企新闻网

谷歌正式开源 Hinton 胶囊实际代码,即刻用 TensorFlow 完成吧

发布者:何同远
导读雷锋网 AI 研习社音讯,置信大家关于「深度学习教父」Geoffery Hinton 在去年年底宣布的胶囊网络还浮光掠影,在论文 Dynamic Routing between Capsules 中,Hinton 团队提出了一种全新的网络构造。为了防止网络构造的芜杂无章,他们提出把关注同一个类别或许同一个属性的神经元打包集合在一同,仿佛胶囊一样。在神经网络任务时,这些胶囊间的通路构成稀疏激活的树状

雷锋网 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

执行 test 顺序,来验证装置能否正确,诸如:

python layers_test.py

疾速 MNIST 测试:

随着流量往智能终端设备迁移,新的机遇“物联网商业社交时代”也将迎来,通过人的第六器官(智能手机)和智能设备终端的联网互动,从而改变了人的行为习惯和消费方式。线下流量通过LBS定位重新分配,又通过物联网终端智能推荐引擎引导到网上任意有价值的地方,至此互联网下半场拉开帷幕。
  • 下载并提取 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 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

 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/

MNIST full 训练指令:

  • 也可以执行--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/

 MNIST baseline 训练指令:

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 目录下。

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

经过 --shift=6 --pad=6 来结构affNIST expanded_mnist

论文地址: https://arxiv.org/pdf/1710.09829.pdf  

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

雷锋网 (大众号:雷锋网) AI 研习社编译整理。

(完)

雷锋网版权文章,未经受权制止转载。概况见。

谷歌正式开源 Hinton 胶囊理论代码,即刻用 TensorFlow 实现吧