7層のネットワークを動かす 2の続きです。
ハイパーパラメーターを変更して動作させた結果です。
環境は、Mac mini (CPU 2.8GHz / メモリ 16GB / SSD / (GPU Intel Iris 1536MB))です。
処理はCPUで行われます。
実行結果 (Adam + ハイパーパラメーター変更)
ハイパーパラメーターlr(learning rate)を変更して試行を繰り返します。
train.pyで本の通りにlearning rateを変更します。
入力が56×56の、犬と猫の判定です。
train.pyを一時的に下記に書き換えます。値の範囲を広げてみます。
simple/train.py
# LEARNING_RATE = 0.001
LEARNING_RATE = 10 ** np.random.uniform(-7, -1)
learning rate : 0.0014189261555348238
learning rate : 0.0003352515060802756
learning rate : 0.0013213253219477798
learning rate : 0.0004197883160590073
learning rate : 2.7583987620149927e-05
learning rate : 0.0020328083711183068
learning rate : 1.8623020439888615e-07
learning rate : 1.3201611375619275e-05
最後の値を使うことで精度を右肩上がりにできそうです。
実行結果 (AdaGrad + ハイパーパラメーター変更)
AdaGradもハイパーパラメーターを変更して試行を繰り返します。
入力が56×56の、犬と猫の判定です。
train.pyを一時的に下記に書き換えます。
simple/train.py
# LEARNING_RATE = 0.001
LEARNING_RATE = 10 ** np.random.uniform(-6, -2)
learning rate : 0.0035263197263801075
learning rate : 1.7913708443245988e-05
learning rate : 0.0008859063677039294
learning rate : 1.6416725596884053e-05
learning rate : 5.4279648020312966e-06
learning rate : 0.0002450075347311236
learning rate : 0.00010860887893701737
最後の値を使うことで精度を右肩上がりにできそうです。
まとめ
- ハイパーパラメーターの変更で、精度の高い学習になることも、学習が進まないこともある
- learning rateは、大きすぎても、小さすぎても、だめ
- 7層であれば、Mac miniでも頑張れる