一、argparse模块
1.1 参数的定义
argparse模块感觉就是一个全局变量,在运行程序时,如果没有给某个参数赋值,就使用其默认参数。具体定义格式如下,我们需要修改的就是parser.add_argument()里面的部分,第一个引号里面的内容就是该参数的名称,前面加“–”是在程序运行时使用的,在接下去的程序运行中会介绍;dest就是参数的名称;type是参数的类型;default是默认值,如果程序运行时,没有特别说明,就是加载默认参数;help就是对该参数进行说明
import argparse
parser = argparse.ArgumentParser(description='')
parser.add_argument('--epoch', dest='epoch', type=int, default=40, help='# of epoch')
parser.add_argument('--batch_size', dest='batch_size', type=int, default=128, help='# images in batch')
parser.add_argument('--use_gpu', dest='use_gpu', type=int, default=1, help='gpu flag, 1 for GPU and 0 for CPU')
parser.add_argument('--lr', dest='lr', type=float, default=0.0001, help='initial learning rate for adam')
parser.add_argument('--C', dest='C', default='Resnet', help='choose model')
args = parser.parse_args()
1.2 参数的使用
就直接args.即可
train_data = mydataset.MyDataset_image2(args.train_dir,"train")
train_data_size=len(train_data)
if train_data_size % args.batch_size!=0:
train_data_size = (train_data_size // args.batch_size) * args.batch_size
train_loader = Data.DataLoader(dataset=train_data, batch_size=args.batch_size, shuffle=True,drop_last=True)
1.3 程序的运行
通常情况下,我们在命令行种,直接使用python train.py 开始训练模型,这时候模型中的参数,都是以default中的默认值进行加载的,为了可以动态的调整某个参数的值,我们可以使用如下方式运行程序
–C ‘Resnet’代表要重新给参数C赋值,值为’Resnet’ ; --model_dir ‘CheckpointResnet_denoise’则是要给参数model_dir重新赋值’CheckpointResnet_denoise’。
二、使用Shell脚本
2.1 创建test1.sh文件
以上介绍如何在程序运行时,自定义的修改一些参数,接下来,就是如何使用这个方法,结合shell脚本,进行炼丹了。我们在命令行状态下,程序目录下先创立.sh的文件,然后再对这个文件进行编辑,最后使用bash方式运行即可,具体方式如下所示:
touch test1.sh
2.2 编辑test.sh文件
vim test1.sh
此时按i键进入test1.sh文件,此时处于编辑状态,我们就可以在里面编辑运行程序了,第一行代码类似头文件,一定要先写上,然后就是使用argparse模块的方法,来编写启动程序的代码,这样,待会我们运行test1.sh文件时,程序就会在执行完第一个训练后,自动改变参数,执行第二个程序了
#! /bin/bash
python train.py --C 'Resnet' --model_dir 'CheckpointResnet' --train_dir '/datasets/Dset_Jerry/TrainData_Class' --test_dir '/datasets/Dset_Jerry/TestData_Class'
python train.py --C 'Densenet' --model_dir 'CheckpointDensenet' --train_dir '/datasets/Dset_Jerry/TrainData_Class' --test_dir '/datasets/Dset_Jerry/TestData_Class'
2.3 退出编辑状态及保存
编写完毕后,我们需要按ESC键,退出编辑状态,紧接着按shift+:号键,此时test1.sh 就处在命令状态,我们在“:”后面敲出wq, 然后按回车,就可以保存此时的test1.sh文件了