详解argparse 模块

文章介绍了Python中的argparse模块,它是用于处理命令行参数和选项的工具。通过示例代码展示了如何定义和解析参数,如批处理大小、训练轮数、学习率等,并解释了如何在不同Python文件间共享这些参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Python 中,可以使用 argparse 模块来控制代码的参数。argparse 可以读取命令行输入的参数,并根据定义的规则进行解析和处理。

控制变量取值

以下是一个简单的例子,说明如何在 Python 中使用 argparse:

import argparse

parser = argparse.ArgumentParser(description='PyTorch Example')

# 添加参数
parser.add_argument('--batch-size', type=int, default=64, metavar='N',
                    help='input batch size for training (default: 64)')
parser.add_argument('--epochs', type=int, default=10, metavar='N',
                    help='number of epochs to train (default: 10)')
parser.add_argument('--lr', type=float, default=0.01, metavar='LR',
                    help='learning rate (default: 0.01)')
parser.add_argument('--momentum', type=float, default=0.5, metavar='M',
                    help='SGD momentum (default: 0.5)')
parser.add_argument('--no-cuda', action='store_true', default=False,
                    help='disables CUDA training')

args = parser.parse_args()

print(args.batch_size)  # 输出 batch size 参数
print(args.epochs)  # 输出 epochs 参数
print(args.lr)  # 输出 learning rate 参数
print(args.momentum)  # 输出 momentum 参数
print(args.no_cuda)  # 输出是否使用 CUDA 参数

在上面的代码中,我们首先导入 argparse 模块,并创建了一个 argparse.ArgumentParser 的实例。我们使用 add_argument 方法添加了一些参数。例如,--batch-size 表示要输入的批次大小,--epochs 表示要训练的 epoch 数量等等。

接下来,我们使用 parse_args() 方法解析了命令行输入的参数,并将它们存储在 args 变量中。然后,我们可以通过访问 args 的属性来获得特定的参数值。

在运行上述代码时,可以使用如下命令来指定参数:

python my_program.py --batch-size 128 --epochs 20 --lr 0.1 --momentum 0.9 --no-cuda

这将使用 batch size 为 128、训练 epoch 数为 20学习率为 0.1SGD momentum 为 0.9,以及禁用 CUDA 的参数运行代码。

调用

假设有两个Python文件A.py和B.py,需要在A.py中设置参数,然后在B.py中使用这些参数。以下是一个示例:

A.py:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--learning_rate', type=float, default=0.001, help='learning rate for optimizer')
parser.add_argument('--batch_size', type=int, default=32, help='batch size for training')
parser.add_argument('--num_epochs', type=int, default=10, help='number of epochs for training')
args = parser.parse_args()

# 将args作为模块的变量导入
import sys
sys.modules[__name__].__dict__.update(args.__dict__)

B.py:

from A import *

print('Learning rate:', learning_rate)
print('Batch size:', batch_size)
print('Number of epochs:', num_epochs)

在上面的例子中,A.py中使用argparse设置了三个参数,然后将这些参数作为模块的变量导入。在B.py中,直接从A模块中导入这些变量并使用它们。

要运行这些文件,只需在命令行中运行python A.py,然后在B.py中导入并使用这些参数。

请注意,如果需要在其他文件中使用这些参数,则需要先导入A.py,然后才能使用这些参数。否则,将无法找到这些变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高山莫衣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值