Skip to content

でぃーぷらーにんぐを無限にやってディープラーニングでディープラニングするためのもの

License

Notifications You must be signed in to change notification settings

HiroFumiko/DeepLearningMugenKnock

 
 

Repository files navigation

ディープラーニング∞本ノックぅぅ!!

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を学ぶ上でとても参考になります! 検定も実施されてるので、興味ある方はぜひ受けることをお勧めします!

画像処理ノックはこっち

画像処理100本ノック!!

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

フレームワーク早見表

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 ニューラルネットのクラス化
番号 問題 答え 番号 問題
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
問題 PyTorch TensorFlow Keras Chainer Published Year
問題 PyTorch tf.layers tf.slim tf.keras Keras Chainer -
Grad-CAM 2016
問題 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
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
Seq2Seq + Attention (Step1. Source Target Attention) 2017
Seq2Seq + Attention (Step2. Self Attention) 2017
Seq2Seq + Attention (Step3. Multi head Attention) 2017
Seq2Seq + Attention (Step4. Feed Forward Networ) 2017
Seq2Seq + Attention (Step5. Positional Encoding) 2017
Seq2Seq + Attention (Final. Parameter setting) 2017
Seq2Seq + Attention (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

© Yoshito Nagaoka All Rights Reserved.

This is under MIT License.

LICENSE

About

でぃーぷらーにんぐを無限にやってディープラーニングでディープラニングするためのもの

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%