【奇技淫巧】Python批量训练模型
【问题描述】
毕业设计遇到一个问题:对多种气体回归。为了简化代码,数据导入已经封装成函数,只是需要手动修改气体种类,但每种气体都要单独训练一次,懒得每次训练完从床上爬起来改俩参数重新训练!!
【尝试】
程序里设置 for
循环,遍历多种气体——会爆内存(训练到第二个模型时电脑就开始卡,每步训练时间很长)
【解决方案】
使用
argparse
模块和os.system()
方法
第一步丨调用 'argparse'
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--gas', type=str, default='funan', help='气体类型')
arg = parser.parse_args()
print(f'Starting Analysis: {arg.gas}!')
run(arg.gas)
第二步丨格式化 run()
函数
除了正常传递参数外,使用格式化语句和字典变量,如:
# 格式化语句
train_data_path = f'./regression_data/{gas_name}/train/'
# 字典变量
gas_name_dict = {'funan':'呋喃'}
legend_title = f'{gas_name_dict[gas_name]}-模型测试'
ax.legend(titile='legend_title')
第三步丨自动化脚本
新建 auto_run.py
,使用 os.system()
函数,搭配自定义命令行参数,实现自动运行
import os
if __name__ == "__main__":
gas_list = ['funan', ...]
for gas in gas_list:
os.system(f'python cnn_regression.py --gas {gas}')
【总结】
目测可以达到期望效果,运行中没有卡顿出现,内存占用9.3GB/16GB(所用CNN参数量较小)
当然啦,如果你有更好的方法,欢迎评论~
os.system()用法:
https://www.cnblogs.com/cwp-bg/p/8465566.html
https://www.cnblogs.com/cangqinglang/p/12190939.html
argparse模块用法:
https://www.cnblogs.com/mastermao/p/15956913.html
https://docs.python.org/zh-cn/3/library/argparse.html