当前位置:   article > 正文

python机器学习算法的批量训练或自动调参_python自动调参

python自动调参

写在前面

我写了一个时间序列预测的程序,但是相同的时间序列我有几十个,每个序列想单独用一个模型。然后就需要训练几十个模型,但是手动训练太费时费力。为了解决这个问题,我尝试性的写了一个for循环,但是不知为何,每次开始训练第二个模型时,优化器的state就全部变为0,到现在我都没找到最终原因。无可奈何,想到了从外部运行程序,每次传递需要的参数即可。

此方法同样适用于自动调参,可以从外部设置参数的变化区间,然后传递相应的参数给模型。

此方法需要用到 argparse 和 import os 两个包,案例如下:

1需要自动训练的 main程序

  1. import argparse
  2. # 建立args
  3. parser = argparse.ArgumentParser()
  4. # 需要自动设置的参数
  5. parser.add_argument("--processID", type=int, default=1)
  6. # 封装args
  7. args = parser.parse_args()
  8. #主程序小例子
  9. print(args.processID)

args是一个自动传参的包,如果有朋友不知道args怎么用,那就需要自己查了。

2.接下来就是最主要的auto_run程序了

  1. import os
  2. import numpy as np
  3. if __name__ == "__main__":
  4. process_id = np.arange(1, 44)
  5. for p_id in process_id:
  6. os.system(f'python main.py --processID {p_id}') # 调用主程序并传入参数

我有43个模型要训练,所以process_id是一个从1到43的向量。如果你的auto_run程序和main程序在同一个环境下的话,直接通过如下格式:

os.system(f'python xx.py --主程序参数 {auto_run变量}')

调用就可以了,如果不在同一环境下的话,那你得设置一下它的路径。

我测试了一下,你分别建立这两个文件,在同一个环境(即目录)底下是可以用的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/557391
推荐阅读
相关标签
  

闽ICP备14008679号