赞
踩
我写了一个时间序列预测的程序,但是相同的时间序列我有几十个,每个序列想单独用一个模型。然后就需要训练几十个模型,但是手动训练太费时费力。为了解决这个问题,我尝试性的写了一个for循环,但是不知为何,每次开始训练第二个模型时,优化器的state就全部变为0,到现在我都没找到最终原因。无可奈何,想到了从外部运行程序,每次传递需要的参数即可。
此方法同样适用于自动调参,可以从外部设置参数的变化区间,然后传递相应的参数给模型。
此方法需要用到 argparse 和 import os 两个包,案例如下:
- import argparse
-
- # 建立args
- parser = argparse.ArgumentParser()
-
- # 需要自动设置的参数
- parser.add_argument("--processID", type=int, default=1)
-
- # 封装args
- args = parser.parse_args()
-
-
- #主程序小例子
- print(args.processID)
args是一个自动传参的包,如果有朋友不知道args怎么用,那就需要自己查了。
- import os
- import numpy as np
-
- if __name__ == "__main__":
-
-
- process_id = np.arange(1, 44)
-
- for p_id in process_id:
- 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变量}')
调用就可以了,如果不在同一环境下的话,那你得设置一下它的路径。
我测试了一下,你分别建立这两个文件,在同一个环境(即目录)底下是可以用的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。