1. 程式人生 > >資源 | 注意遷移的PyTorch實現

資源 | 注意遷移的PyTorch實現

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

選自Github

作者:szagoruyko

機器之心編譯

參與:趙華龍、吳攀

本專案是論文《要更加註重注意力:通過注意遷移技術提升卷積神經網路的效能(Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer)》PyTorch 實現。點選文末「閱讀原文」可查閱原論文。

專案地址:https://github.com/szagoruyko/attention-transfer

這篇論文已經提交給了 ICLR 2017 會議,正在 review 狀態:https://openreview.net/forum?id=Sks9_ajex

到目前為止該程式碼庫裡的內容包括:

  • CIFAR-10 實驗的基於啟用技術的 AT 程式碼

  • ImageNet 實驗的程式碼(ResNet-18-ResNet-34 student-teacher)

即將上線:

  • 基於梯度的 AT

  • 場景和基於 CUB 啟用的 AT 程式碼

  • 預訓練的基於啟用的 AT ResNet-18

程式碼使用 PyTorch。原始的實驗是用 torch-autograd 做的,我們目前已經驗證了 CIFAR-10 實驗結果能夠完全在 PyTorch 中復現,而且目前正在針對 ImageNet 做類似的工作(由於超引數的原因,PyTorch 的結果有一點點變差)

引用:

  @article{Zagoruyko2016AT, author = {Sergey Zagoruyko and Nikos Komodakis}, title = {Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer}, url = {https://arxiv.org/abs/1612.03928}, year = {2016}}

要求

先安裝 PyTorch,再安裝 torchnet:

  git clone https://github.com/pytorch/tntcd tntpython setup.py install

安裝 OpenCV 以及 Python 支援包,以及帶有 OpenCV 變換的 torchvision:

  git clone https://github.com/szagoruyko/visioncd vision; git checkout opencvpython setup.py install

最後,安裝其他的 Python 包:

  pip install -r requirements.txt

實驗

CIFAR-10

這一節講述如何得到本文中第一個表裡的那些結果。

首先,訓練老師:

  python cifar.py --save logs/resnet_40_1_teacher --depth 40 --width 1python cifar.py --save logs/resnet_16_2_teacher --depth 16 --width 2python cifar.py --save logs/resnet_40_2_teacher --depth 40 --width 2

用基於啟用的 AT 來訓練:

  python cifar.py --save logs/at_16_1_16_2 --teacher_id resnet_16_2_teacher --beta 1e+3

用 KD 來訓練:

  python cifar.py --save logs/kd_16_1_16_2 --teacher_id resnet_16_2_teacher --alpha 0.9

我們下一步計劃增加帶有 beta 衰退的 AT+KD 來得到最優的知識轉換結果。

ImageNet

預訓練模型

我們提供帶有基於啟用 AT 的 ResNet-18 預訓練模型:

從頭開始訓練

下載 ResNet-34 的預訓練權值(functional-zoo 裡有更多介紹):

  wget https://s3.amazonaws.com/pytorch/h5models/resnet-34-export.hkl

根據 fb.resnet.torch 準備資料,然後進行訓練(比如使用 2 個 GPU):

  python imagenet.py --imagenetpath ~/ILSVRC2012 --depth 18 --width 1 --teacher_params resnet-34-export.hkl --gpu_id 0,1 --ngpu 2 --beta 1e+3

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述