想解决的问题
\quad\quad
在使用python
编写脚本文件时,我们可以通过使用argparse.ArgumentParser
命令行传递一些超参数,但有时我们想输入多组超参数比对结果,能不能写个bash
脚本节省工作量呢?
\quad\quad
例如我们通过以下命令向python
脚本文件传递超参数:
python3 main.py -T=2 -epochs=100
\quad\quad
事实上我们想要将[1, 2, 4, 8, 16]
等不同的参数传递给-T
,以得到不同超参数下的结果,该如何做呢?
解决办法
\quad\quad
如下编写bash
脚本文件即可
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
# 定义数组
array=(1 2 4 8 16)
# # 循环数组
# for i in "${array[@]}"; do
# python3 main.py -T $i
# done
# # 如果python脚本文件需要传入多个命令行参数,可以用函数包裹起来
run_main_file() {
python3 main.py -T $1 -epochs $2
}
# # 循环,传递给-T参数
for T in "${array[@]}"; do
run_main_file $T 100
done
\quad\quad 输出结果为
args.T = 1
args.epochs = 100
args.T = 2
args.epochs = 100
args.T = 4
args.epochs = 100
args.T = 8
args.epochs = 100
args.T = 16
args.epochs = 100
\quad\quad
对应的python
脚本文件如下
import argparse
parser = argparse.ArgumentParser(description="This is just a demo script")
parser.add_argument("-T", type=int, default=0)
parser.add_argument("-epochs", type=int, default=0)
args = parser.parse_args()
print(f'args.T = {args.T}')
print(f'args.epochs = {args.epochs}')
exit()