DUICUO

Google はヒントン カプセル理論のコードを公式にオープンソース化しました。今すぐ TensorFlow で実装しましょう。

[[219212]]

AI研究所によると、昨年末に発表されたジェフリー・ヒントン氏のカプセルネットワークを覚えている人も多いだろう。ヒントン氏のチームは論文「カプセル間の動的ルーティング」の中で、斬新なネットワーク構造を提案した。ネットワーク構造が混沌とすることを避けるため、同じカテゴリや属性に焦点を当てたニューロンをカプセルのようにグループ化することを提案した。ニューラルネットワークが機能すると、これらのカプセル間の経路は疎に活性化されたツリー構造(ツリー内の特定のパス上にある一部のカプセルのみが活性化される)を形成する。これにより、カプセルネットワークの解釈可能性が向上する。

実験結果では、CapsNetは数字認識と堅牢性の両方で良好な結果を達成しました。詳細については、「ついにHinton氏の新しいCapsule論文が発表されました。深層ニューラルネットワークの新時代を告げるものとなるでしょうか?」の記事をご覧ください。

最近、論文の筆頭著者であるSara Sabour氏がGitHubでコードを公開し、誰でもすぐに実践できるようになりました。Leifeng.com AI研究所は、以下のチュートリアルをまとめ、要約しました。

必要な構成:

  • TensorFlow (インストールまたはアップグレードするには、http://www.tensorflow.org をクリックしてください)

  • NumPy(詳細はhttp://www.numpy.org/をご覧ください)

  • グラフィックプロセッサ

次のようなテスト プログラムを実行して、インストールが正しいことを確認します。

 Pythonレイヤーテスト.py 

クイックMNISTテスト:

  • MNIST tfrecord をダウンロードして $DATA_DIR/ に抽出します。

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

  • MNIST モデル チェックポイントをダウンロードして $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/m odel.ckpt- 1 

クイックCIFAR10アンサンブルテスト:

  • CIFAR10 バイナリ ファイルをダウンロードして $DATA_DIR/ に解凍します。

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

  • CIFAR10 モデル チェックポイントをダウンロードして $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 の完全なトレーニング手順:

  • トレーニング テスト セットでトレーニングするには、`--validate=true` も実行できます。

  • 複数の GPU でトレーニングするには、`--num_gpus=NUM_GPUS` を実行します。

python experiment.py --data_dir=$DATA_DIR /mnist_data/ --max_steps= 300000 \ --summary_dir= /tmp/attempt0/ 

MNIST ベースライントレーニングの手順:

python experiment.py --data_dir=$DATA_DIR /mnist_data/ --max_steps= 300000 \ --summary_dir= /tmp/attempt1/ --model=baseline 

上記モデルのトレーニング中に検証をテストするには:

上記のモデルをトレーニングするときは、検証セットでテストします (トレーニング中は命令が継続的に実行されることに注意してください)。

  • トレーニング中に `--validate=true` を実行する場合も同様です。

  • トレーニング セット用に 1 つ、検証セット用に 1 つの合計 2 つの 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 

affNISTのexpanded_mnistは、--shift=6 --pad=6を使用して構築できます。

論文リンク: https://arxiv.org/pdf/1710.09829.pdf

GitHub アドレス: https://github.com/Sarasra/models/tree/master/research/capsules