argparse

Shell

定义变量:变量名=变量值
如:num=10
引用变量:$变量名

如:$num

注意事项:

1、变量名只能包含英文字母下划线,不能以数字开头
1_num=10 错误
num_1=20 正确
2、等号两边不能直接接空格符,若变量中本身就包含了空格,则整个字符串都要用双引号、或单引号括起来
3、双引号 单引号的区别
双引号:可以解析变量的值
单引号:不能解析变量的值

$1 $2 $3 $4 …:运行脚本时传递的参数 用空格隔开

argparse

argparse是Python标准库中用于解析命令行参数和选项的模块。它提供了一种简单和灵活的方式来定义命令行接口,并自动生成帮助信息。下面是argparse的原理和基本使用方法:

原理:
argparse模块的原理是通过定义ArgumentParser对象,并使用该对象来定义命令行参数的规则。ArgumentParser对象会解析命令行中的参数,并根据规则提供相应的值。

使用方法:

#导入argparse模块:

import argparse

#创建ArgumentParser对象:可以提供一个可选的description参数来描述程序的功能
parser = argparse.ArgumentParser(description='Description of your program')
#定义命令行参数的规则:

parser.add_argument('name', help='Description of name argument')
parser.add_argument('--optional', help='Description of optional argument')

add_argument方法用于定义参数的规则,第一个参数是参数的名称,可以是位置参数或可选参数。
help参数用于提供参数的帮助信息。

#解析命令行参数:

args = parser.parse_args()

parse_args方法会解析命令行参数,并返回一个包含解析结果的Namespace对象。

#使用解析结果:

print(args.name)
print(args.optional)

可以通过args对象的属性来访问解析结果。

#运行脚本时传递命令行参数:

python script.py value --optional optional_value

value是位置参数,对应于name参数。
。- -optional是可选参数,可以根据需要提供。

在命令行参数中,- -和-有不同的含义和用途。

。- -(双破折线)用于标识长选项(Long Options)或命名选项(Named Options)。长选项通常是完整的单词或短语,用于描述选项的含义。例如,- -verbose、- -output-file等都是长选项。使用长选项时,可以通过等号(=)或空格将选项与其值分隔,例如- -output-file=output.txt或- -output-file output.txt。

-(单破折线)用于标识短选项(Short Options)或标志选项(Flags)。短选项通常是单个字母,用于表示简短的选项。例如,-v、-o等都是短选项。有些短选项可以接受一个参数值,这时可以紧接着选项字母后面提供参数值,例如-o output.txt。

总结:

。- -用于长选项,通常是完整的单词或短语,可以使用等号或空格分隔选项和值。
-用于短选项,通常是单个字母,可以紧接着选项字母提供参数值。

在使用argparse模块时,参数的定义方式与命令行中使用的方式相对应。长选项在argparse中使用–前缀,而短选项使用-前缀。例如,–output-file对应argparse中的–output_file,-v对应argparse中的-v。通过这种方式,您可以方便地定义并处理命令行参数。

parser.add_argument()方法是argparse模块中用于定义命令行参数的函数。它提供了丰富的选项和参数来定义参数的规则和行为。下面是add_argument()方法的详细介绍:

parser.add_argument(name or flags, ..., action, nargs, const, default, type, choices, required, help, metavar)

参数说明:

  • name or flags:参数的名称或选项。可以是位置参数的名称,也可以是可选参数的选项。

  • …:支持多个参数的定义,可以定义多个名称或选项。

  • action:参数的操作。用于指定参数所需的操作,如存储值、计数等。常见的值有:

     "store":存储参数值(默认值)。
     "store_const":存储常量值。
     "store_true":存储True值。
     "store_false":存储False值。
     "append":将值追加到列表中。
     "append_const":将常量值追加到列表中。
     "count":统计参数出现的次数。
     "help":显示帮助信息并退出。
     更多操作选项请参考官方文档。
    
  • nargs:参数的数量。用于指定参数的数量,可以是具体的数字,或特殊值如"?“(可选),”*“(任意数量),”+"(至少一个),argparse.REMAINDER(剩余参数)等。

  • const:常量值。仅在action="store_const"或action="append_const"时使用,用于指定存储的常量值。

  • default:默认值。指定参数的默认值。

  • type:参数的类型。用于指定参数的数据类型,如int、float、str等。

  • choices:可选值。用于限制参数的取值范围,只允许参数值为指定的可选值。

  • required:是否必需。指定参数是否为必需参数,如果设置为True,则在解析时必须提供该参数。

  • help:帮助信息。用于指定参数的帮助信息,将在生成的帮助文档中显示。

  • metavar:元变量。用于指定参数在帮助文档中的显示名称。

通过使用add_argument()方法,您可以根据需要定义各种类型的参数,并指定其行为、类型、默认值等。这样,argparse模块可以根据这些定义来解析命令行参数,并提供相应的值供您在脚本中使用。

以上是argparse的基本使用方法。通过定义参数规则、解析命令行参数并使用解析结果,可以方便地处理命令行输入。argparse还支持更多高级功能,如定义参数类型、设置默认值、互斥参数等,您可以查阅argparse的官方文档以获得更详细的信息和示例。

#!/bin/sh

python -u -c 'import torch; print(torch.__version__)'

CODE_PATH=codes
DATA_PATH=data_concept
SAVE_PATH=models

#The first four parameters must be provided
MODE=$1
MODEL=$2
DATASET=$3
GPU_DEVICE=$4
SAVE_ID=$5

FULL_DATA_PATH=$DATA_PATH/$DATASET
SAVE=$SAVE_PATH/"$MODEL"_"$DATASET"_"$SAVE_ID"

#Only used in training
BATCH_SIZE=$6
NEGATIVE_SAMPLE_SIZE=$7
HIDDEN_DIM=$8
GAMMA=$9
ALPHA=${10}
LEARNING_RATE=${11}
MAX_STEPS=${12}
TEST_BATCH_SIZE=${13}

if [ $MODE == "train" ]
then

echo "Start Training......"

CUDA_VISIBLE_DEVICES=$GPU_DEVICE python -u $CODE_PATH/run_cake.py --do_train \
    --cuda \
    --do_valid \
    --do_test \
    --data_path $FULL_DATA_PATH \
    --model $MODEL \
    -n $NEGATIVE_SAMPLE_SIZE -b $BATCH_SIZE -d $HIDDEN_DIM \
    -g $GAMMA -a $ALPHA -adv \
    -lr $LEARNING_RATE --max_steps $MAX_STEPS \
    -save $SAVE --test_batch_size $TEST_BATCH_SIZE \
    ${14} ${15} ${16} ${17} ${18} ${19} ${20}

elif [ $MODE == "valid" ]
then

echo "Start Evaluation on Valid Data Set......"

CUDA_VISIBLE_DEVICES=$GPU_DEVICE python -u $CODE_PATH/run_cake.py --do_valid --cuda -init $SAVE
    
elif [ $MODE == "test" ]
then

echo "Start Evaluation on Test Data Set......"

CUDA_VISIBLE_DEVICES=$GPU_DEVICE python -u $CODE_PATH/run_cake.py --do_test --cuda -init $SAVE

else
   echo "Unknown MODE" $MODE
fi

这段Shell脚本的含义如下:

第一行指定了脚本使用的shell解释器为/bin/sh。

接下来的一行使用Python命令执行一段代码,该代码导入torch模块并打印出torch的版本号。

CODE_PATH、DATA_PATH和SAVE_PATH是脚本中定义的变量,用于存储代码路径、数据路径和保存路径。

MODE、MODEL、DATASET、GPU_DEVICE和SAVE_ID是脚本中定义的命令行参数,用于指定脚本的运行模式、模型、数据集、GPU设备和保存ID。

FULL_DATA_PATH是根据DATA_PATH和DATASET构建的完整数据路径。

SAVE是根据SAVE_PATH、MODEL、DATASET和SAVE_ID构建的保存路径。

BATCH_SIZE、NEGATIVE_SAMPLE_SIZE、HIDDEN_DIM、GAMMA、ALPHA、LEARNING_RATE、MAX_STEPS和TEST_BATCH_SIZE是脚本中定义的训练参数,用于指定批量大小、负样本大小、隐藏层维度、GAMMA值、ALPHA值、学习率、最大步数和测试批量大小。

如果MODE等于"train",则进入训练模式,执行以下操作:

打印"Start Training......"
使用CUDA_VISIBLE_DEVICES指定可见的GPU设备,并使用Python命令执行$CODE_PATH目录下的run_cake.py脚本,传递一系列参数来进行训练。
如果MODE等于"valid",则进入验证模式,执行以下操作:

打印"Start Evaluation on Valid Data Set......"
使用CUDA_VISIBLE_DEVICES指定可见的GPU设备,并使用Python命令执行$CODE_PATH目录下的run_cake.py脚本,设置--do_valid选项和-init参数来进行验证。
如果MODE等于"test",则进入测试模式,执行以下操作:

打印"Start Evaluation on Test Data Set......"
使用CUDA_VISIBLE_DEVICES指定可见的GPU设备,并使用Python命令执行$CODE_PATH目录下的run_cake.py脚本,设置--do_test选项和-init参数来进行测试。
如果MODE不等于"train""valid""test",则打印"Unknown MODE"和MODE的值,表示未知的运行模式。

在使用Python命令执行$CODE_PATH目录下的run_cake.py脚本时,通过在命令中添加参数来传递给脚本。具体的参数传递方式如下:

--do_train、--do_valid和--do_test是用来指定脚本的操作模式,表示是否进行训练、验证或测试。

--data_path后面跟着的是数据路径,指定了数据的位置。

--model后面跟着的是模型名称,用于指定使用的模型。

-n后面跟着的是负样本大小,用于指定负样本的数量。

-b后面跟着的是批量大小,用于指定每个训练批次的样本数量。

-d后面跟着的是隐藏层维度,用于指定模型中隐藏层的维度。

-g后面跟着的是GAMMA值,用于指定模型的GAMMA参数。

-a后面跟着的是ALPHA值,用于指定模型的ALPHA参数。

-adv表示启用模型的高级模式。

-lr后面跟着的是学习率,用于指定模型的学习率。

--max_steps后面跟着的是最大步数,用于指定模型的训练最大步数。

-save后面跟着的是保存路径,用于指定训练模型的保存位置。

--test_batch_size后面跟着的是测试批量大小,用于指定每个测试批次的样本数量。

${14} ${15} ${16} ${17} ${18} ${19} ${20}用于传递额外的参数,具体的含义需要根据脚本的实现来确定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

且放白鹿青涯间

你的打赏将是我最大的鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值