机器学习小技巧:模型训练完成后发送邮件

原文链接
在这里插入图片描述

前言

当训练时间变得越来越长时,一些很慌的人比如我,总是想着时不时看一眼训练的怎么样了,导致心不在焉。所以训练结束后自动发送邮件,是个不错的选择。

当然几年前就看到类似的方案通过itchat给自己发送微信。
为了尽量区分生活和工作,还是不要给自己发微信了,下班收到训练结果,可能忍不住。所以还是给自己的工作邮箱发邮件好了。

内容

内容其实很简单。

  • 设置好邮箱的smtp服务,其实和outlook客户端收发邮件一个道理
  • 把需要发送的信息作为邮件内容发送出去
    核心代码如下:
# Import smtplib for the actual sending function
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart


def send_email(subject="No subject", content="I am boring"):
    mail_host = "smtp.163.com"
    mail_user = "[email protected]"
    mail_pw = "********"  # 授权码
    sender = "[email protected]"
    receiver = "[email protected]"

    # Create the container (outer) email message.
    msg = MIMEText(content, "plain", "utf-8")
    msg['Subject'] = subject
    msg['From'] = sender
    msg['To'] = receiver

    try:
        smtp = smtplib.SMTP_SSL(mail_host, 994)  # 实例化smtp服务器
        smtp.login(mail_user, mail_pw)  # 登录
        smtp.sendmail(sender, receiver, msg.as_string())
        print("Email send successfully")
    except smtplib.SMTPException:
        print("Error: email send failed")


if __name__ == '__main__':
    send_email(subject="Training finished", content="I am boring")

邮箱设置

程序中有个mail_pw是邮箱授权码,可以通过自己的邮箱获取。登录自己常有的邮箱,以163为例。打开设置,将SMPT服务开启:

在这里插入图片描述

开启后,通过发动短信得到授权密码。(注意保密,泄漏后就相当于邮箱密码泄漏了)

在这里插入图片描述

将授权密码填入程序中的mail_pw变量即可。

其他

  • Loss出现NAN时,自动结束训练
  • 可配合nohup命令使用,即使断开服务器也在后台继续训练
  • 如果想定时发送邮件,可配合crontab命令
  • 发微信的文章:https://zhuanlan.zhihu.com/p/25597975?group_id=822180572054048768

联系方式

  • 公众号YueTan

猜你喜欢

转载自blog.csdn.net/weixin_38812492/article/details/113762039