Linux下程序执行自动化需求:批量调参运行实验脚本
自动批量执行参数化实验的终端脚本方案
方案1:遍历所有参数组合(全量实验)
适合需要测试指定参数所有可能搭配的场景,能全面覆盖参数组合的效果差异。
- 创建脚本文件
在终端用文本编辑器(比如nano)新建run_experiments.sh文件:
nano run_experiments.sh
将以下内容粘贴进去:
#!/bin/bash # 定义要测试的参数范围,可根据需求修改数值 NUM_TREES=(5 10 15 20) MAX_DEPTH=(5 7 9 11) PCA_COMPONENTS=(20 40 60 80) # 嵌套循环遍历所有参数组合 for trees in "${NUM_TREES[@]}" do for depth in "${MAX_DEPTH[@]}" do for pca in "${PCA_COMPONENTS[@]}" do # 打印当前实验信息,方便跟踪进度 echo "Starting experiment: numTrees=$trees, maxDepth=$depth, pcaComponents=$pca" # 执行实验命令,同时将输出保存到专属日志文件 teaa/examples/scripts/run-python.sh teaa/examples/python/rf_mnist.py \ --numTrees "$trees" --maxDepth "$depth" --pcaComponents "$pca" \ > "exp_t${trees}_d${depth}_p${pca}.log" 2>&1 done done done
- 给脚本添加执行权限
在终端运行:
chmod +x run_experiments.sh
- 启动批量实验
在终端运行:
./run_experiments.sh
执行后,每个参数组合的实验输出会单独保存到类似exp_t10_d7_p40.log的文件中,方便后续分析结果。
方案2:生成随机参数(指定次数实验)
适合不需要全量组合,只需随机抽取n组参数快速测试的场景。
- 创建脚本文件
用nano新建run_random_experiments.sh文件:
nano run_random_experiments.sh
粘贴以下内容:
#!/bin/bash # 设置总实验次数 EXPERIMENT_COUNT=10 # 定义每个参数的取值范围,可自行调整 MIN_TREES=5 MAX_TREES=20 MIN_DEPTH=3 MAX_DEPTH=12 MIN_PCA=10 MAX_PCA=80 # 循环执行指定次数的实验 for ((i=1; i<=EXPERIMENT_COUNT; i++)) do # 生成范围内的随机整数参数 trees=$((RANDOM % (MAX_TREES - MIN_TREES + 1) + MIN_TREES)) depth=$((RANDOM % (MAX_DEPTH - MIN_DEPTH + 1) + MIN_DEPTH)) pca=$((RANDOM % (MAX_PCA - MIN_PCA + 1) + MIN_PCA)) # 打印当前实验序号和参数 echo "Running experiment $i: numTrees=$trees, maxDepth=$depth, pcaComponents=$pca" # 执行命令并保存日志 teaa/examples/scripts/run-python.sh teaa/examples/python/rf_mnist.py \ --numTrees "$trees" --maxDepth "$depth" --pcaComponents "$pca" \ > "exp_${i}_t${trees}_d${depth}_p${pca}.log" 2>&1 done
- 添加执行权限并运行
chmod +x run_random_experiments.sh ./run_random_experiments.sh
注意事项
- 修改参数范围时,直接编辑脚本里的数组或MIN/MAX数值即可
- 日志文件的命名规则可根据需求调整,比如添加时间戳
- 如果实验耗时较长,可用
nohup ./run_experiments.sh &命令后台运行,避免终端关闭后中断
内容的提问来源于stack exchange,提问作者PicaPython
相关产品推荐
相关产品推荐

