LoginSignup
7
8

More than 3 years have passed since last update.

機械学習の学習が終わったらその結果を自動的にメールで送ってくれるモジュールを作ってみた

Last updated at Posted at 2019-09-15

とりあえずpythonのモジュールを作ってみたかった

Python初心者です。

今回は自作モジュールを作ってみたい!

それだけの気持ちでやりました。

というわけで今回製作したのは、

機械学習の学習が終わったらそのロス等のログをメールで送ってくれるモジュール

です。特にfine tuneなどやってるときはロスがきちんと減っているかをすぐ知りたかったり、メールがくることで学習が終わっていることをメールで知ることができます。(2回言った)

1 gitから取ってきてメールアドレスを設定する

gitからcloneします。

git clone git@github.com:daikiclimate/modules.git

次にメールアドレスだけ先に登録しておくと楽です。

vi Datorch/mailog.py

そして以下の部分を編集します。

mailog.py
   #settings
    to_email = "aaaa@gmail.com"
    from_email = "bbbb@gmail.com"

    gmail_account = "aaaa@gmail.com"
    gmail_password = "cccc"

"aaaa@gmail.com"は送信側のメールアドレス
"bbbb@gmail.com"は受信側のメールアドレス
"cccc"はaaaaのパスワードです。

(経験上)gmailでログ送信・受信専用のアカウントを作り、送信も受信も同じアカウントでやってしまうのが簡単でいいと思います。

そして送信にしようするアカウントで「安全性の低いアプリのアクセス」を許可する必要があります。

以下のURLから変更してください。(セキュリティ含め新アカウント推奨)
https://myaccount.google.com/security

以上で準備は終了です。

次に以上のものをpipのライブラリに登録します。
pipでインストールしたみたいに使うためには、こうするといいようです。

python setup.py develop

2 使い方

mail送信用のモジュールをインポートします

training.py
import Datorch.mailog as mailog

引数1がメールタイトル、引数2が本文のあるテキストファイルの名前です。
今回で言えば、"log.txt"というテキストファイルにログを記述してあります。

training.py
mailog.sendmail("Sending Log!","log.txt")

これでメールが送信できます。
簡単のためにテキストを作成するLogfuncクラスを作成してあります。

training.py
from Datorch.printlog import Logfunc
Logf = Logfunc()

for epoch in range(10):
    ...
    ...
    Logf.update(epoch, train_loss, test_loss)
    Logf.print_log()
    Logf.write_log()

updateはクラス変数に数値を更新する作業になります。引数はとりあえず以下のようになってます。
update(self, epoch, train_loss, test_loss = None, correct = None, total = None )

print_log()は標準出力でlossなどをプリントします。

write_log()は"log.txt"という形でロスを記録する(追記する)テキストファイルを更新います。

自分では使ってます。

いいんです。僕は「pythonのモジュール作ったことあります」って言いたかっただけなんです

正直な感想

メールアドレスの設定とかあんまりクールではないですが、時間があれば更新していきたいと思います。

リンク

7
8
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
7
8