ディープラーニング∞本ノックぅぅ!!
Update now!
何問になるか分からないので∞本になってます。多分これからいろんな技術が出るからどんどん更新する予定でっす。
これはイモリと一緒にディープラーニングの基礎からDLのライブラリの扱い、どういうDLの論文があったかを実装しながら学んでいくための問題集です。本とか論文読んだだけじゃ机上の空想でしかないので、ネットワークの作成や学習率などのハイパーパラメータの設定を自分の手を動かしながら勉強するための問題集です。
問題集として使ってもテンプレやチートシートとして使っても使い方は自由です!!!!
僕が研究室で3年修行してディープラーニングで必要そうだなーと思ったものを集めてます。
例えば研究してて提案手法を急にKerasでやればとか簡単に言うけどそんなすぐにできるかいってよくあると思うんだけどそういうのにもすぐ対応できる力を身につけるためのものだとも思ってます。
- 内容はいろいろな文献を調べて載っけてるので正しくないものもあるかもしれないので注意して下さい。もし間違ってたらプルリク下さい笑
- 【注意】このページを利用して、または関して生じた事に関しては、私は一切責任を負いません。 すべて 自己責任 でお願い致します。
- コードの書き方は私の趣向がけっこう出てるので、この書き方キモってなったら自分の書き方でやっていってください。答えはあくまで参考です。FWによってチョクチョク実装に小さな違いがあるのでそこはご愛嬌
- なんとなく本とか買わずにDLを勉強したいーーーって人向けだと思う
もしこれがみなさんのお役に立ったらGithub Sponsorになってください!
Related
★追記 2019.11.7
Study-AI株式会社様 http://kentei.ai/
のAI実装検定のシラバスに使用していただくことになりました!(画像処理100本ノックも)
Study-AI株式会社様ではAIスキルを学ぶためのコンテンツを作成されており、AIを学ぶ上でとても参考になります!
検定も実施されてるので、興味ある方はぜひ受けることをお勧めします!
画像処理ノックはこっち
Update
Twitterで更新を発信してますぅ
https://twitter.com/curry_frog
- 2020.1.1 [Pytorch] EfficientNetB1~B7を追加
- 2019.12.30 [Pytorch] EfficientNetB0を追加
- 2019.12.23 Chainerのサポートが終了したらしいので、PytorchとTensorflowに絞っていきます
- 2019.12.23 [Pytorch] 可視化 Grad-CAMを追加
- 2019.11.23 [Pytorch] 言語処理・会話生成のHREDを追加
- 2019.11.19 [Pytorch] 画像生成のWGAN-GPを追加
- 2019.11.8 [Pytorch] 画像生成のVAEとalphaGANを追加
- 2019.10.28 [Pytorch] 画像生成のWGANを追加
- 2019.10.21 [PyTorch] Semantic SegmentationでSegNetを追加
- 2019.10.16 [PyTorch] Seq2Seq Hard Attentionを追加
- 2019.10.10 [PyTorch] Seq2Seq Attention(Step別)を追加
- 2019.9.30 [Pytorch] MobileNet v2 を追加
- 2019.9.19 [TensorFlow] Xception, MobileNet_v1 を追加
- 2019.9.16 [TensorFlow] ResNet 18, 34, 50, 101, 152 を追加
- 2019.8.19 [Pytorch] NLP: Seq2seq+Attention, word2vecを追加
- 2019.8.15 [Pytorch] pix2pixを追加
- 2019.8.4 [Pytorch] DenseNet121, 169, 201, 264を追加
- 2019.7.30 [PyTorch, Keras] Xceptionを追加
- 2019.7.28 [Keras] ResNeXt-50, 101を追加
- 2019.7.23 [Pytorch] ResNeXt-50, 101を追加
- 2019.7.17 [Pytorch] VAEを追加 [keras, tensorflow, chainer] CGAN(MNIST)を追加
- 2019.7.5 [pytorch, keras]ResNet18, 34, 101, 152を追加
- 2019.6.16 [pytorch, tensorflow, keras, chainer] ResNet50を追加
- 2019.6.9 [tensorflow] DCGANを追加
- 2019.6.7 [Pytorch, tensorflow, keras, chainer]GoogleNet-v1(Inception)を追加
- 2019.5.26 [tensorflow] DCGAN, Conditional GANを追加
- 2019.5.19 [Keras, Chainer] ConditionalGANを追加
- 2019.5.18 [データセット準備] MNIST, [Pytorch]ConditionalGANを追加
- 2019.5.2 [データセット準備] Cifar10、[AutoEncoder, ConvAutoEncoder, GAN, DCGAN]Cifar10を追加
- 2019.3.31 [画像認識モデル] APIを追加
- 2019.3.19 [Pytorch][Chainer] GAN, DCGANを追加
- 2019.3.17 Pooling layerを追加したけど、あとからクラス化と学習を追加する予定
- 2019.3.17 seq2seq, convolutional layer を追加
- 2019.3.16 ニューラルネットをクラス化 を追加
- 2019.3.13 パーセプトロン系を追加
- 2019.3.12 AutoEncoder, ConvAutoEncoder, パーセプトロンを追加
- 2019.3.9 GAN, DCGANを追加
- 2019.3.6 RNN, LSTM, BDLSTMを追加
- 2019.3.5 AutoEncoder, RNNを追加
- 2019.3.4 データ拡張・回転を追加
- 2019.3.3 UNetを追加
環境設定
Python-3.6でやって下さい。(解答はPython-3.6で用意してます)
1. Minicondaのインストール
https://conda.io/miniconda.html のサイトからMinicondaをインストールします。これはWindowでもMacOSでも可能です。Minicondaがインストールできたら、端末(Windowでは端末、MacOSではターミナル)を開き、以下コマンドで仮想環境を作成します。もしくはGoogle colabolatoryを使って見て下さい。GPUが使えます。
$ conda create python=3.6 -n dlmugenknock
作成できたら、以下コマンドで仮想環境を動作します。
$ source activate dlmugenknock
するとこうなります。
(dlmugenknock) :~/work_space/DeepLearningMugenKnock/ :$
2. gitのインストール
gitをインストールします。そして、端末を開いて、以下のコマンドを実行します。このコマンドでこのディレクトリを丸ごと自分のパソコンにコピーできます。
$ git clone https://github.com/yoyoyo-yo/DeepLearningMugenKnock.git
3. パッケージのインストール
以下のコマンドで必要なパッケージをインストールします。これで準備は完了です!!
$ pip install -r requirements.txt
フレームワーク早見表
- CNN・フレームワークの使い方編
- 共通事項, PyTorch, Tensorflow, Keras, Chainer, Caffe, :---:, :---:, :---:, :---:, :---:, :---:, 入力, [mb,c,h,w], [mb, h, w, c], [mb, h, w, c], [mc, c, h, w], [mb, c, h, w], 教師ラベル, index [mb], onehot [mb, cls], onehot [mb, cls], index [mb], index [mb], 速度, まあまあ早い, 早い, 早い, 普通, まあまあ早い?, how to, ✓, ✓, ✓, ✓, ✓install(Docker) ✓install(Native), sample, ✓, ✓(slim) ✓(layers) ✓(raw), ✓, ✓, ## 問題
詳細な問題内容は各ディレクトリのREADMEにあります。(ディレクトリで下にスクロールすればあります)
自分でフルスクラッチから実装する(理論)
理論編, 番号, 問題, 答え, 番号, 問題, :---:, :---:, :---:, :---:, :---:, :---:, 1, パーセプトロン AND, ✓, 2, パーセプトロン 学習, ✓, 3, パーセプトロン 収束性, ✓, 4, パーセプトロン Sigmoid, ✓, 5, パーセプトロン バイアス, ✓, 6, パーセプトロン OR, ✓, 7, パーセプトロン NOT, ✓, 8, パーセプトロン XOR, ✓, 9, 多層パーセプトロン FeedForward, ✓, 10, 多層パーセプトロン 学習, ✓, 11, 更に多層パーセプトロン, ✓, 12, ニューラルネットのクラス化, ✓
理論編2, 番号, 問題, 答え, 番号, 問題, :---:, :---:, :---:, :---:, :---:, :---:, 13, 画像認識, ✓, 14, 誤差関数, ✓, Sigmoid Cross Entropy, ✓, Convolutional Layer, ✓, Padding, ✓, Stride, ✓, Max-pooling layer, ✓, Average-pooling layer, ✓
データセット用意
1. 自分で用意したデータセットを読み込む + 前処理, 番号, 問題, 答え, 番号, 問題, :---:, :---:, :---:, :---:, :---:, :---:, 1, 自分で用意したデータセットの読み込み, ✓, 2, ミニバッチの作成, ✓, 3, イテレーション・エポック, ✓, 4, データ拡張・水平反転, ✓, 5, データ拡張・上下反転, ✓, 6, データ拡張・回転, ✓
2. オープンソースのデータセットを使う, 番号, 問題, 答え, 番号, 問題, :---:, :---:, :---:, :---:, :---:, :---:, 1-1, MNIST Step.1 ダウンロード, ✓, 1-2, MNIST Step.2 学習データの読み込み, ✓, 1-3, MNIST Step.Final テストデータの読み込み, ✓, 2-1, CIFAR-10 Step.1 ダウンロード, ✓, 2-2, CIFAR-10 Step.2 学習データの読み込み, ✓, 2-3, CIFAR-10 Step.Final テストデータの読み込み, ✓, 3, Fashion MNIST, ✓
自分でネットワーク組む編
ここから基本的に、「python answers/##.py --train --test」と打てば動きます。
画像認識編, 問題, PyTorch, TensorFlow, Keras, Chainer, Published year, :---:, :---:, :---:, :---:, :---:, :---:, :---:, :---:, 問題, PyTorch, tf.layers, tf.slim, tf.keras, Keras, Chainer, モデルの書き方の簡潔化, ✓, ✓, ✓, ✓, API , ✓, LeNet, ✓, ✓, ✓, ✓, AlexNet, ✓, ✓, ✓, ✓, 2012, ZFNet, ✓, ✓, ✓, ✓, 2013, Global Average Pooling, ✓, ✓, ✓, ✓, 2013, Network in network, ✓, ✓, ✓, ✓, 2013, VGG16, ✓, ✓, ✓, ✓, 2014, VGG19, ✓, ✓, ✓, ✓, 2014, GoogLeNet-v1(Inception), ✓, ✓, ✓, ✓, 2014, Batch Normalization, ✓, ✓, ✓, ✓, 2015, ResNet-18, ✓, ✓, ✓, 2015, ResNet-34, ✓, ✓, ✓, 2015, ResNet-50, ✓, ✓, ✓, ✓(not good), 2015, ResNet-101, ✓, ✓, ✓, 2015, ResNet-152, ✓, ✓, ✓, 2015, ResNeXt-50, ✓, ✓, ✓, 2016, ResNeXt-101, ✓, ✓, 2016, Xception, ✓, ✓, ✓, 2016, DenseNet121, ✓, 2016, DenseNet169, ✓, 2016, DenseNet201, ✓, 2016, DenseNet264, ✓, 2016, MobileNet-v1, ✓, ✓, 2017, MobileNet-v2, ✓, 2019, EfficientNetB0, ✓, 2019, EfficientNetB1, ✓, 2019, EfficientNetB2, ✓, 2019, EfficientNetB3, ✓, 2019, EfficientNetB4, ✓, 2019, EfficientNetB5, ✓, 2019, EfficientNetB6, ✓, 2019, EfficientNetB7, ✓, 2019, ### Visualization, 問題, PyTorch, TensorFlow, Keras, Chainer, Published Year, :---:, :---:, :---:, :---:, :---:, :---:, :---:, :---:, 問題, PyTorch, tf.layers, tf.slim, tf.keras, Keras, Chainer, -, Grad-CAM, ✓, 2016, ### Semantic Segmentation編, 問題, PyTorch, TensorFlow, Keras, Chainer, Published Year, :---:, :---:, :---:, :---:, :---:, :---:, :---:, :---:, 問題, PyTorch, tf.layers, tf.slim, tf.keras, Keras, Chainer, -, SemanticSegmentationとは?, Binalization Step.1. データセット読み込み, ✓, ✓, ✓, ✓, Binalization Step.2. 学習時のLoss計算, ✓, ✓, ✓, ✓, Binalization Step.3. テスト時の予測結果の表示, ✓, ✓, ✓, ✓, SemanticSegmentation Step.1. データセット読み込み, ✓, ✓, ✓, ✓, SemanticSegmentation Step.2. 学習時のLoss計算, ✓, ✓, ✓, ✓, SemanticSegmentation Step.3. テスト時の予測結果の表示, ✓, ✓, ✓, ✓, UpSampling手法1. NearestNeighbor補間, ✓, ✓, ✓, ✓, UpSampling手法2. Transposed convolution, ✓, ✓, ✓, ✓, 特徴マップのconcat, ✓, ✓, ✓, ✓, UNet, ✓, ✓, ✓, ✓, 2015, UNet風モデル, ✓, ✓, ✓, ✓, 2015, SegNet, ✓, 2015, ### 画像生成編, 問題, PyTorch, TensorFlow, Keras, Chainer, Published Year, :---:, :---:, :---:, :---:, :---:, :---:, :---:, :---:, 問題, PyTorch, tf.layers, tf.slim, tf.keras, Keras, Chainer, AutoEncoder, ✓, ✓?, ✓, ✓, AutoEncoder cifar10, ✓, ✓, ✓, ✓, ConvolutionalAutoEncoder, ✓, ✓?, ✓, ✓, ConvolutionalAutoEncoder cifar10, ✓, ✓, ✓, ✓, VAE (Variational AutoEncoder) MNIST, ✓, VAE MNIST 潜在変数の可視化, ✓, VAE MNIST 潜在変数の操作による画像の生成1, ✓, VAE MNIST 潜在変数の操作による画像の生成2, ✓, GAN, ✓, ✓ not good, ✓, ✓, GAN cifar10, ✓, ✓ failed, ✓, ✓, DCGAN, ✓, ✓, ✓, ✓, DCGAN cifar10, ✓, ✓, ✓, ✓, Conditional GAN mnist, ✓, ✓, ✓, ✓, 2014, Conditional GAN cifar10, ✓, ✓, ✓, ✓, pix2pix, ✓, 2016, pix2pix-GP, ✓, -, WGAN, ✓, 2017, WGAN-GP, ✓, 2017, alpha-GAN MNIST, ✓, 2017, alpha-GAN CIFAR10, ✓, 2017, ### 画像処理編
言語処理編, 問題, PyTorch, TensorFlow, Keras, Chainer, Published year, :---:, :---:, :---:, :---:, :---:, :---:, :---:, :---:, 問題, PyTorch, tf.layers, tf.slim, tf.keras, Keras, Chainer, 1 hotベクトル化, ✓, RNN (Many-to-one) Step.1. 学習 , ✓, ✓, ✓, RNN (Many-to-one) Step.2. テスト, ✓, ✓, ✓, LSTM (Many-to-one), ✓, ✓, ✓, ✓, Bi-directional LSTM (Many-to-one), ✓, ✓, ✓, ✓?, GRU (Many-to-one), ✓, ✓, ✓, ✓, Seq2seq, ✓, ✓, 2014, Transformer (Step1. Source Target Attention), ✓, 2017, Transformer (Step2. Self Attention), ✓, 2017, Transformer (Step3. Multi head Attention), ✓, 2017, Transformer (Step4. Feed Forward Networ), ✓, 2017, Transformer (Step5. Positional Encoding), ✓, 2017, Transformer (Final. Parameter setting), ✓, 2017, Transformer (Hard Attention), ✓, 2014?, HRED, ✓, 2015, Word2Vec (Skip-gram), ✓, ## Citation
@article{yoyoyo-yoDeepLearningMugenKnock,
Author = {yoyoyo-yo},
Title = {DeepLearningMugenKnock},
Journal = {https://github.com/yoyoyo-yo/DeepLearningMugenKnock},
Year = {2019}
}
License
© Curry yoshi All Rights Reserved.
This is under MIT License.
LICENSE