深度学习调参-自动化运行多组超参数

1. 创建一个神经网络模型

比如用cnn在mnist数据集上训练,关于模型建立和训练的代码这里不写了。。。

在程序开头加入超参数的定义:建议至少包括参数名称、类型、和初始值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#########################
# filename: mnist_cnn.py
#########################

import argparse

# -------parser paras--------------------
parser = argparse.ArgumentParser(description='Trains a simple CNN on MNIST dataset')
parser.add_argument('--layer_n', type=int, default=1)
parser.add_argument('--activition', type=str, default='tanh')
parser.add_argument('--seed', type=int, default=11)

args = parser.parse_args()
print(args.__dict__)

seed = args.seed
layer_n = args.layer_n
activition = args.activition

# --- CNN model ----
# balabala ...

# --- train ----
# balabala ...

2. 再创建一个脚本文件,用来执行mnist_cnn.py。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#########################
# filename: run_all.py
#########################

import subprocess

cmds = ['python mnist_cnn.py --layer_n=1 --activition=tanh --seed=11',
'python mnist_cnn.py --layer_n=1 --activition=tanh --seed=17',
'python mnist_cnn.py --layer_n=1 --activition=tanh --seed=19']

for cmd in cmds:
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in iter(p.stdout.readline, b''):
msg = line.strip().decode('gbk')
print(msg)