始める無料で始める

最適化パラメータを変更する

最適化に実際に取り組んでみましょう。ここでは、極端に小さい学習率、極端に大きい学習率、そして「ちょうどよい」学習率でモデルを最適化してみます。演習を実行したあとは結果を確認し、損失関数の値が小さいほど良いことを思い出してください。

この演習では、前の分類モデル(Titanic の生存者予測)で使用した予測変数と目的変数をあらかじめ読み込んであります。学習率を変更するたびに最適化を最初からやり直して、公平に各学習率の比較ができるようにしたいところです。そのため、未学習のモデルを作成する関数 get_new_model() を用意しています。

この演習はコースの一部です

Pythonで学ぶDeep Learning入門

コースを見る

演習の手順

  • tensorflow.keras.optimizers から SGD をインポートします。
  • 試す学習率のリスト lr_to_test を作成します。中身は .0000010.011 とします。
  • for ループで lr_to_test を反復しながら、次を行います。
    • get_new_model() 関数を使って、新しい未最適化モデルを構築します。
    • SGD() コンストラクタでキーワード引数 lr=lr を用いて、my_optimizer というオプティマイザを作成します。
    • モデルをコンパイルします。optimizer には上で作成した SGD オブジェクトを指定し、これは分類問題なので loss には 'categorical_crossentropy' を使用します。
    • predictorstarget を使ってモデルを学習させます。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import the SGD optimizer
____

# Create list of learning rates: lr_to_test
lr_to_test = ____

# Loop over learning rates
for lr in lr_to_test:
    print('\n\nTesting model with learning rate: %f\n'%lr )
    
    # Build new model to test, unaffected by previous models
    model = ____
    
    # Create SGD optimizer with specified learning rate: my_optimizer
    my_optimizer = ____
    
    # Compile the model
    ____
    
    # Fit the model
    ____
コードを編集して実行