谷歌正式開源 Hinton 膠囊理論代碼,即刻用 TensorFlow 實現吧

2021-01-10 雷鋒網

雷鋒網 AI 研習社消息,相信大家對於「深度學習教父」Geoffery Hinton 在去年年底發表的膠囊網絡還記憶猶新,在論文 Dynamic Routing between Capsules 中,Hinton 團隊提出了一種全新的網絡結構。為了避免網絡結構的雜亂無章,他們提出把關注同一個類別或者同一個屬性的神經元打包集合在一起,好像膠囊一樣。在神經網絡工作時,這些膠囊間的通路形成稀疏激活的樹狀結構(整個樹中只有部分路徑上的膠囊被激活)。這樣一來,Capsule 也就具有更好的解釋性。

在實驗結果上,CapsNet 在數字識別和健壯性上都取得了不錯的效果。詳情可以參見終於盼來了Hinton的Capsule新論文,它能開啟深度神經網絡的新時代嗎?

日前,該論文的第一作者 Sara Sabour 在 GitHub 上公布了論文代碼,大家可以馬上動手實踐起來。雷鋒網 AI 研習社將教程編譯整理如下:

所需配置:

執行 test 程序,來驗證安裝是否正確,諸如:

python layers_test.py

快速 MNIST 測試:

python experiment.py --data_dir=$DATA_DIR/mnist_data/ --train=false \
--summary_dir=/tmp/ --checkpoint=$CKPT_DIR/mnist_checkpoint/model.ckpt-1

快速 CIFAR10 ensemble 測試:

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 訓練指令:

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 研習社編譯整理。

(完)

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 谷歌開源TensorFlow Object Detection API物體識別系統
    API 將谷歌內部使用的物體識別系統(2016 年 10 月,該系統在 COCO 識別挑戰中名列第一)開源給更大的社區,幫助打造更好的計算機視覺模型。一個 Jupyter notebook 可通過我們的模型之一執行開箱即用的推理藉助谷歌雲實現便捷的本地訓練腳本以及分布式訓練和評估管道SSD 模型使用了輕量化的 MobileNet,這意味著它們可以輕而易舉地在行動裝置中實時使用。在贏得 2016 年 COCO 挑戰的研究中,谷歌使用了 Fast RCNN 模型,它需要更多計算資源,但結果更為準確。
  • 谷歌正式發布TensorFlow 1.5,究竟提升了哪些功能?
    昨天,谷歌在 GitHub 上正式發布了 TensorFlow 的最新版本 1.5.0,並開源了其代碼。支持 CUDA 9 和 cuDNN 7 被認為是本次更新的最重要部分。機器之心對這次更新的重大改變以及主要功能和提升進行了編譯介紹,原文請見文中連結。
  • 輸入示例,自動生成代碼:TensorFlow官方工具TF-Coder已開源
    最近,谷歌 TensorFlow 開源了一個幫助開發者寫 TensorFlow 代碼的程序合成工具 TF-Coder。項目地址:https://github.com/google-research/tensorflow-coderGoogle Colab 試用地址:https://colab.research.google.com/github/google-research/tensorflow-coder/blob/master/TF-Coder_Colab.ipynb
  • Tensorflow 全網最全學習資料匯總之Tensorflow 的入門與安裝【2】
    《TensorFlow學習筆記1:入門》連結:http://www.jeyzhang.com/tensorflow-learning-notes.html本文與上一篇的行文思路基本一致,首先概括了TensorFlow的特性,然後介紹了graph、session、variable 等基本概念的含義,以具體代碼的形式針對每個概念給出了進一步的解釋
  • 玩轉TensorFlow?你需要知道這30功能
    我還需要多用用這個網址:https://www.tensorflow.org/swift/11)KerasKeras 如今直接集成在 TF 中,也就是這意味著,如果不想使用低階的模型,那仍然可以用高階 API 的用戶友好性來實現圖形+模型的構建。2.0 版本將會有更多的功能!
  • 基於TensorFlow2.0的中文深度學習開源書來了!GitHub趨勢日榜第一
    十三 發自 凹非寺 量子位 報導 | 公眾號 QbitAITensorFlow 2.0 發布已有一個半月之久,你會用了嗎?近日,一個叫做深度學習開源書的項目在火了。因為這是一本基於TensorFlow 2.0 正式版的中文深度學習開源書。還包含電子書和配套原始碼。話不多說,一起來看看這本爆款書籍吧!
  • 資源| TensorFlow版本號升至1.0,正式版即將到來
    選自github機器之心編譯參與:吳攀2015 年 11 月份,谷歌宣布開源了深度學習框架 TensorFlow,一年之後,TensorFlow 就已經成長為了 GitHub 上最受歡迎的深度學習框架(參見機器之心文章《深度 | TensorFlow 開源一周年:這可能是一份最完整的盤點》),儘管那時候 TensorFlow 的版本號還是 v0.11。
  • TensorFlow極速入門
    一、前言目前,深度學習已經廣泛應用於各個領域,比如圖像識別,圖形定位與檢測,語音識別,機器翻譯等等,對於這個神奇的領域,很多童鞋想要一探究竟,這裡拋磚引玉的簡單介紹下最火的深度學習開源框架 tensorflow。
  • TensorFlow 2.0開源工具書,30天「無痛」上手
    開源電子書地址:https://lyhue1991.github.io/eat_tensorflow2_in_30_days/GitHub 項目地址:https://github.com/lyhue1991/eat_tensorflow2_in_30_days為什麼一定要學
  • Hinton膠囊網絡代碼正式開源,你也能為GitHub1.4萬fork的庫貢獻
    【新智元導讀】萬眾期待中,Hinton膠囊網絡論文《Dynamic Routing between Capsules》的代碼正式公布,僅僅5天,Github上fork數量就超過了1.4萬。Capsule真能取代CNN嗎?接下來是你動手的時間了。
  • TensorFlow入門簡介,新手請看這裡!
    【IT168 技術】  TensorFlow是一個使用數據流圖進行數值計算的開源軟體庫,是谷歌基於DistBelief這些數據「線」可以傳送「大小可動態調整」的多維數據數組,即「張量」(tensor)。一旦輸入端的所有張量準備好,節點將被分配到各種計算設備完成異步並行運算。
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    我的建議谷歌的 TensorFlowTensorFlow 是谷歌的開發者創造的一款開源的深度學習框架,於 2015 年發布。官方研究發布於論文《TensorFlow:異構分布式系統上的大規模機器學習》。
  • TensorFlow 資源大全中文版
    (點擊上方藍字,快速關注我們)譯文:伯樂在線專欄作者 - Yalye英文:jtoy如有好文章投稿
  • 深度解讀TensorFlow,了解它的最新發展!
    Tensorboard是tensorflow內置的一個可視化工具,它通過將tensorflow程序輸出的日誌文件的信息可視化,使得tensorflow程序的理解、調試和優化更加簡單高效。Tensorboard的可視化依賴於tensorflow程序運行輸出的日誌文件,因而tensorboard和tensorflow程序在不同的進程中運行。
  • 關於TensorFlow,你應該了解的9件事
    但如果你追求的是更大的目標,那就嗨起來吧~TensorFlow 被用於尋找新的行星,協助醫生檢查糖尿病性視網膜病變來預防患者失明,向當局報告非法砍伐行為來拯救森林。它是 AlphaGo 和 Google Cloud Vision 的基礎,也會是屬於你的。TensorFlow 是開源的,你可以免費下載並立即開始使用。
  • 從框架優缺點說起,這是一份TensorFlow入門極簡教程
    本文介紹了學習 TensorFlow 的系列教程,旨在通過簡單的理論與實踐幫助初學者一步步掌握 TensorFlow 的編程技巧。這一系列教程分為 6 部分,從為什麼選擇 TensorFlow 到卷積神經網絡的實現,介紹了初學者所需要的技能。
  • 【強化學習實戰】基於gym和tensorflow的強化學習算法實現
    這一講,我們將利用gym和tensorflow來實現兩個最經典的強化學習算法qleanring 和基於策略梯度的方法。本節課參考了莫煩的部分代碼(見知乎問答《強化學習(reinforcement learning)有什麼好的開源項目、網站、文章推薦一下?》),在此對其表示感謝。
  • 終於來了,TensorFlow 新增官方 Windows 支持
    TensorFlow 宣布開源剛剛過去一年。在谷歌的支持下,TensorFlow 已成為 GitHub 上最受歡迎的機器學習開源項目。同時,谷歌也在 TensorFlow 框架中進行過各類研究、開源了其中一些項目,這些研究涉及到自然語言處理、機器翻譯、圖像描述、圖像分類等等。
  • 谷歌開源量子計算軟體原始碼,便利科學家利用量子計算機
    開源、開源、開源,重要的事情說三遍。繼開源tensorflow、caffe等深度學習開發框架後,當地時間10月24日,谷歌在自己的官方博客上宣布,開源量子計算軟體OpenFermion,從而讓科學家更方便的使用量子計算機。
  • 谷歌剛發布的深度學習動態計算圖工具TensorFlow Fold是什麼?
    7 日,谷歌通過博客正式發布了 TensorFlow Fold,該庫針對 TensorFlow 1.0 框架量身打造,可以幫助深度學習開發者根據不同結構的輸入數據建立動態的計算圖(Dynamic Computation Graphs),簡化了模型訓練階段對輸入數據的預處理過程,提升了系統的運行效率。