)  # 多少个epoch学习率降一次
parser.add_argument('--gamma',
                    default=0.1,
                    type=float,
                    help="learning rate decay")  # 学习率每次降当前的5e-04
parser.add_argument('--weight-decay',
                    default=5e-04,
                    type=float,
                    help="weight decay (default: 5e-04)"
                    )  # 为防止过拟合,加了正则项,正则项的加入,模型的复杂度会成为loss的一部分
# Architecture
parser.add_argument('-a',
                    '--arch',
                    type=str,
                    default='resnet50',
                    choices=models.get_names())  # 选择model
# Miscs
parser.add_argument('--print-freq',
                    type=int,
                    default=10,
                    help="print frequency")  # 多少频率打印loss
parser.add_argument('--seed', type=int, default=1,
                    help="manual seed")  # 控制随机参数,保征每次结果稳定复现
parser.add_argument('--resume', type=str, default='',
                    metavar='PATH')  # 读档,读某个路径的
parser.add_argument('--evaluate', action='store_true',
                    help="evaluation only")  # 因为测试和训练在一个py,所以通过其来控制,是测试还是训练
parser.add_argument(
    '--eval-step',
    type=int,
    default=-1,  # 之前为-1
parser.add_argument('--train-batch', default=32, type=int,
                    help="train batch size")
parser.add_argument('--test-batch', default=32, type=int, help="test batch size")
parser.add_argument('--lr', '--learning-rate', default=0.0003, type=float,
                    help="initial learning rate")
parser.add_argument('--lr-cent', default=0.5, type=float,
                    help="learning rate for center loss")
parser.add_argument('--weight-cent', type=float, default=0.0005, help="weight for center loss")
parser.add_argument('--stepsize', default=20, type=int,
                    help="stepsize to decay learning rate (>0 means this is enabled)")
parser.add_argument('--gamma', default=0.1, type=float,
                    help="learning rate decay")
parser.add_argument('--weight-decay', default=5e-04, type=float,
                    help="weight decay (default: 5e-04)")
# Architecture
parser.add_argument('-a', '--arch', type=str, default='resnet50', choices=models.get_names())
# Miscs
parser.add_argument('--print-freq', type=int, default=10, help="print frequency")
parser.add_argument('--seed', type=int, default=1, help="manual seed")
parser.add_argument('--resume', type=str, default='', metavar='PATH')
parser.add_argument('--evaluate', action='store_true', help="evaluation only")
parser.add_argument('--eval-step', type=int, default=-1,
                    help="run evaluation for every N epochs (set to -1 to test after training)")
parser.add_argument('--start-eval', type=int, default=0, help="start to evaluate after specific epoch")
parser.add_argument('--save-dir', type=str, default='log')
parser.add_argument('--use-cpu', action='store_true', help="use cpu")
parser.add_argument('--gpu-devices', default='0', type=str, help='gpu device ids for CUDA_VISIBLE_DEVICES')

args = parser.parse_args()

def main():