12.7. [課題]MLPによるiris datasetのクラス分類プログラムのCLIアプリ化#

$ python mlp_iris.py

で実行できる形のファイルmlp_iris.pyを作成して提出せよ。

jupyterファイルの内容を修正して、教師データとテストデータに対する正答率を標準出力に表示するようにしよう。

最低限必要な引数リスト(イコールの後ろの値はデフォルト値):

  • learning_rate = 0.01

  • batch_size = 16

  • max_epochs = 100

  • device =”cpu” … torchを動かしたいデバイス ( cpuとかgpuとか)

  • seed =42… 疑似乱数のSEED

  • test_size=0.3

最終的に標準出力に出してほしいもの:

print("教師データのACC",: train_acc)
print("テストデータのACC",: test_acc)

心がけてほしい事項

  • ArgumentParserの説明文をしっかり書くこと.

  • コードにコメントを追加して読みやすくすること.(分量はお任せします)

  • 関数にdocstringsを追加して読みやすくすること.

  • linter/formatterなどを使って,コードを綺麗にすること.

  • 自分で実行してみる or デバッガを使ってエラーが出ないプログラムを完成させよう.

Visual Studio Codeなどのテキストエディタを使ってmlp_iris.pyを編集してください.vscodeを利用する場合はpython用の設定(拡張機能のインストール)をすることで,コードを綺麗に書くことができます.
また,vscode以外だとJetBrainが出しているPython用IDE「PyCharm」がお勧めです.(学生なら無料で使えるはず)

12.7.1. 実装#

mlp_iris.pyのサンプルプログラムを以下に示します.

12.7.2. 実行結果#

12.7.2.1. Usage#

(datasci) mriki@client132 prml % python script/mlp_iris.py -h
usage: mlp_iris.py [-h] [--learning_rate LEARNING_RATE] [--batch_size BATCH_SIZE] [--seed SEED]
                   [--max_epochs MAX_EPOCHS] [--device DEVICE] [--test_size TEST_SIZE]
                   [--validation_step VALIDATION_STEP]

三層のMLPでiris datasetのクラス分類を行う

options:
  -h, --help            show this help message and exit
  --learning_rate LEARNING_RATE
  --batch_size BATCH_SIZE
  --seed SEED
  --max_epochs MAX_EPOCHS
  --device DEVICE
  --test_size TEST_SIZE
  --validation_step VALIDATION_STEP
                        バリデーションの実行ステップ

12.7.2.2. 実行#

実行例1

(datasci) mriki@client132 prml % python script/mlp_iris.py --seed=2023
Namespace(learning_rate=0.01, batch_size=16, seed=2023, max_epochs=100, device='cpu', test_size=0.3, validation_step=1)
教師データのACC: 0.957
テストデータのACC: 0.978

実行例2

(datasci) mriki@client132 prml % python script/mlp_iris.py --seed=2525
Namespace(learning_rate=0.01, batch_size=16, seed=2525, max_epochs=100, device='cpu', test_size=0.3, validation_step=1)
教師データのACC: 0.947
テストデータのACC: 0.911