LoginSignup
0
0

More than 3 years have passed since last update.

深層学習後編2 TensorFlow 講義課題視聴レポート (現場で潰しが効くディープラーニング講座)

Last updated at Posted at 2019-07-15

TensorFlowの実装演習

  • 最も利用者の多いディープラーニングのフレームワーク。他のフレームワークとしてはKerasやpytorchなどがあげられる
  • TensorFlowではテンソルというものを使っており、テンソルのセッションをrunする必要がある

無題.png

  • プレースホルダーというものを使い、後からテンソルに値を入れることができる。ミニバッチごとに違うデータを入れて学習するときなどに活用する

無題1.png

  • 定数の宣言はconstantで行い、変数の宣言はVariableで行う
  • 値の更新式はassignで生成し、生成した更新式を呼び出すことで指定した変数を更新することができる

無題2.png

線形回帰
  • iter_numは学習の回数、plot_intervalは誤差を表示する間隔を指定している
  • ランダムな数字xを生成し3x+2を正解の値とし、3x+2にノイズを足した値を学習データとする
  • 誤差関数は平均二乗法、オプティマイザーは勾配降下法を使用

無題2.png
無題3.png
無題4.png
無題5.png

  • ノイズを増やすとデータのばらつきが増える

無題6.png

  • dの値を増やすとノイズの割合が減るのでデータのばらつきが減る

無題7.png

非線形回帰
  • ランダムに生成したxで非線形な関数を作成
  • 重みは標準偏差を0.01で設定している

無題8.png
無題9.png
無題10.png

  • 誤差を増やすとデータのばらつきが増える

無題11.png

  • dの値を変えても学習がうまくいっていることが確認できる

無題12.png

  • 上記と同様の方法で𝑦=30𝑥2+0.5𝑥+0.2の式を回帰分析したところ、学習率を0.01にすると学習がうまくいった。式によって最適な学習率が変わると考えられる

無題13.png
無題14.png
無題15.png

mnist(一層)
  • mnistの画素数は784あるので、xは784個で設定する
  • 0~9の数字を分類するので、dは10個で設定する
  • xは784、dは10なので、Wは784×10の行列
  • 分類問題なので誤差関数はクロスエントロピーを使用

無題16.png
無題17.png

mnist(多層)
  • 隠れ層を2つ追加してmnistの分類を行う
  • 隠れ層の活性化関数はどちらもシグモイド関数を使用

無題18.png
無題19.png
無題20.png

  • 隠れ層のサイズを少なくした場合、学習の精度が低くなることを確認した

無題21.png

  • オプティマイザーをAdamから勾配降下法に変えると、学習が遅くうまくいかないことを確認できた。学習率をもう少し上げると学習がうまくいくと考えられる

無題22.png

mnist(CNN)
  • 畳み込み層が2層、全結合層が2層のCNNで学習を行う
  • tensorflowではconv2dで学習データ、重み、ストライドなどを指定することでCNNを実装することができる
  • tf.truncated_normal([5, 5, 1, 32], stddev=0.1)は5×5のフィルターでチャネルが32であることを示している
  • padding='SAME'は入力と出力のサイズが同じになるようなパディングを設定していることを示す

無題23.png
無題24.png
無題25.png

  • もともとの学習精度が良いからか、ドロップアウト率を0にしても、あまり学習に変化しないことが確認できた。

無題26.png

次へ(keras、強化学習)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0