演習 4-1 (個人): データセットとしてCIFAR-10(カラー画像のデータセット) を使用し、CNNを使ってディープラーニングを実行してみましょう。
CNN とディープラーニングの仕様は以下の通りです。
(1) 画像フォーマットは channels_last (縦、横、チャンネル数) とする
(2) いわゆる「LeNet-5」を作る
入力層: rows = 32、 cols = 32、Cin = 3 ※ 入力画像は R・G・B の 3 チャンネル
第1層: 畳み込み層、Cout = 6、kernel_size = 5、 activation='tanh'
第2層: プーリング層(平均値)、pool_size = 2
第3層: 畳み込み層、Cout = 16、kernel_size = 5、 activation='tanh'
第4層: プーリング層(平均値)、pool_size = 2
第5層: 平坦化層
第6層: 全結合層、 K = 120、 activation='tanh'
第7層: 全結合層、 K = 84、 activation='tanh'
出力層: 全結合層、 M = 10、 activation='softmax' ※ 出力は各クラスに属する確率
(3) 学習率は r = 0.001、エポック数は E = 10、バッチサイズは B = 512 とする
Jupyter Notebook で「DL_4_1」というノートブックを作ります
テンプレートスクリプトをノートブックにコピーして下さい。
(注意) テンプレートは channels_last 設定用になっていますので、channels_first 設定になっている場合は設定を変更して下さい。
テキストと DL_3_3 を参考にしながらスクリプトファイル内の ? の部分を穴埋めして下さい。
実行して下さい。
指定場所に「ソース」と「学習前の学習データセットの損失、正解率」、「学習後の学習データセットの損失、正解率」、「学習後のテストデータセットの損失、正解率」を貼り付けて下さい。
演習 4-2 (個人): DL_4_1 のテストデータセットの正解率を改善してみましょう
「DL_4_1」を「DL_4_2」にコピーします
テストデータセットの正解率が70%を超えるようにCNNの構造を変更したり、ドロップアウト層を加えたり、学習率、エポック数、バッチサイズ等を変更したり等の工夫をして下さい。
指定場所に「ソース」、「学習後のテストデータセットの損失・正解率」を貼り付けて下さい。