AIの基礎⑦「PytorchによるCNN要点の整理」


Pytorchでも準備されているチュートリアルの受講途上である。

AIの基礎であるネットワーク設計と学習によるAIモデルの確定までの流れについて、深層学習フレームワークであるPythonからPytorchに置き換え理解を進めている。

 

Pytorchチュートリアルの受講は、入門と基礎(下記の講座メニューの黒字部分)を終えた。それ以降の講座は、AI応用分野への展開事例のようなので、一旦、Pytorchを使って入門と基礎で学んだことをもとに学習済みモデルを幾つか完結版として整理してみる。

 


0. PyTorch入門(Learn the Basics)

[0] 目次(table of contents)

[1] テンソル(Tensors)

[2] データセットとデータローダー(Datasets & DataLoaders)

[3] データ変換(Transforms) 

[4] モデル構築(Build Model) 

[5] 自動微分(Autograd)

[6] 最適化(Optimization Loop) 

[7] モデルの保存・読み込み(Save, Load and Use Model)

[8] クイックスタート(Quickstart) 

1. PyTorch基礎(Learning PyTorch)

[1] PyTorch60分講座: PyTorchとは?

[2] PyTorch60分講座: Autograd(自動微分)(AUTOGRAD: AUTOMATIC DIFFERENTIATION)

[3] PyTorch60分講座: ニューラルネットワーク入門(NEURAL NETWORKS) 

[4] PyTorch60分講座: クラス分類モデルの訓練方法(TRAINING A CLASSIFIER)

[5] 例題を用いた、PyTorchの各要素の解説(LEARNING PYTORCH WITH EXAMPLES)

[6] torch.nnの解説(WHAT IS TORCH.NN REALLY?) 

[7] TensorBoardを用いたモデル、データと訓練の可視化(VISUALIZING MODELS, DATA, AND TRAINING WITH TENSORBOARD)

2. 画像処理と動画(Image/Video)

[1] 画像分類タスクに対する転移学習の方法(TRANSFER LEARNING FOR COMPUTER VISION TUTORIAL)

[2] Torchvisionを利用した物体検出のファインチューニング手法(TORCHVISION OBJECT DETECTION FINETUNING TUTORIAL)

[3] 敵対的サンプル(adversarial examples)の生成(ADVERSARIAL EXAMPLE GENERATION)

[4] DCGANの実装チュートリアル(DCGAN TUTORIAL) 

3. 自然言語処理(Text)

[1] TransformerとTorchTextを用いたsequence-to-sequenceモデルの学習(SEQUENCE-TO-SEQUENCE MODELING WITH NN.TRANSFORMER AND TORCHTEXT) 

[2] 文字単位RNNによる名前(苗字)の分類(NLP FROM SCRATCH: CLASSIFYING NAMES WITH A CHARACTER-LEVEL RNN) 

[3] 文字単位RNNによる名前(苗字)の生成(NLP FROM SCRATCH: GENERATING NAMES WITH A CHARACTER-LEVEL RNN) 

[4] sequence to sequenceとアテンションによる翻訳モデル(NLP FROM SCRATCH: TRANSLATION WITH A SEQUENCE TO SEQUENCE NETWORK AND ATTENTION) 

[5] TorchTextを使用したテキスト分類(TEXT CLASSIFICATION WITH TORCHTEXT) 

[6] TorchTextを使用した言語翻訳(LANGUAGE TRANSLATION WITH TORCHTEXT)  

4. 深層強化学習(Reinforcement Learning)

[1] 強化学習(DQN)チュートリアル (REINFORCEMENT LEARNING (DQN) TUTORIAL)  

[2] 強化学習を用いたマリオの訓練 (TRAIN A MARIO-PLAYING RL AGENT) 

[3] 強化学習チートシート (RL CHEAT SHEET) 

5. PyTorchモデルのデプロイメント手法(Deploying PyTorch Models in Production)

[1] FlaskのREST APIとしてデプロイする方法(Python環境)(DEPLOYING PYTORCH IN PYTHON VIA A REST API WITH FLASK)  

[2] TorchScript入門(INTRODUCTION TO TORCHSCRIPT) 

[3] C++でのTorchScriptモデルのロード手法(LOADING A TORCHSCRIPT MODEL IN C++) 

[4] PyTorchモデルのONNXへの変換とONNXランタイムでの実行((OPTIONAL) EXPORTING A MODEL FROM PYTORCH TO ONNX AND RUNNING IT USING ONNX RUNTIME)  

6. 並列分散型の訓練手法(Parallel and Distributed Training)

[1] PyTorch Distributedの概要(PYTORCH DISTRIBUTED OVERVIEW) 

[2] シングルマシン環境におけるモデル並列訓練(SINGLE-MACHINE MODEL PARALLEL BEST PRACTICES) 

[3] 分散データ並列訓練入門(GETTING STARTED WITH DISTRIBUTED DATA PARALLEL) 

[4] PyTorchで実装する分散アプリケーション(WRITING DISTRIBUTED APPLICATIONS WITH PYTORCH) 

[5] 分散RPCフレームワーク入門(GETTING STARTED WITH DISTRIBUTED RPC FRAMEWORK)  

[6] 分散RPCフレームワークを用いたパラメーターサーバーの実装(IMPLEMENTING A PARAMETER SERVER USING DISTRIBUTED RPC FRAMEWORK) 

[7] RPCを用いた分散パイプライン並列化(DISTRIBUTED PIPELINE PARALLELISM USING RPC)  

[8] 非同期実行を用いたバッチRPC処理の実装(IMPLEMENTING BATCH RPC PROCESSING USING ASYNCHRONOUS EXECUTIONS)  

[9] 分散データ並列と分散RPCフレームワークの連携(COMBINING DISTRIBUTED DATAPARALLEL WITH DISTRIBUTED RPC FRAMEWORK)  

7. 音声データ(Audio)

英語版のチュートリアルサイトでは項目がもう少し細かく分かれていますが、Jupyter Notebookは同じなので、以下2つにまとめています。

 

[1] torchaudioによる音声データの取り扱い(AUDIO MANIPULATION WITH TORCHAUDIO) 

[2] tourchaudioを用いた音声コマンド認識(分類)ニューラルネットワークの構築(SPEECH COMMAND RECOGNITION WITH TORCHAUDIO)  

8. モデル最適化(Model Optimization)

[1] PyTorchモジュールのプロファイリング方法(Profiling your PyTorch Module)  

[2] Ray Tuneを用いたハイパーパラメータチューニング(Hyperparameter tuning with Ray Tune)  

[3] 枝刈り(Pruning)のチュートリアル(Pruning Tutorial)  

[4] LSTM単語言語モデルの動的量子化(ベータ版)((beta) Dynamic Quantization on an LSTM Word Language Model)  

[5] 画像分類における量子化済み転移学習(ベータ版)((beta) Quantized Transfer Learning for Computer Vision Tutorial)  

[6] BERTの動的量子化(ベータ版)((beta) Dynamic Quantization on BERT) 

9. PyTorchのフロントエンド利用(Frontend APIs)

[・] 現在作成中、少々お待ちください