前言
在構建神經網路程序中,常常需要修改神經網路的超引數,比如說訓練樣本的批次大小、學習率等,為了方便引數修改,可以通過命令列來傳遞這些超引數,通過argparse也可以定義檔案路徑,讀取檔案夾串列下的所有檔案,
argparse
argparse是python用于決議命令列引數和選項的標準模塊,用于代替已經過時的optparse模塊,argparse模塊的作用是用于決議命令列引數,
大白話說就是可以通過argparse配置程式中運行的相應引數,并可以在終端使用命令列的形式給程式命令列添加對應的引數來運行程式,
給程式配置argparse通常分為四個步驟:
- 匯入模塊 import argparse
- 創建決議物件 parser = argparse.ArgumentParser()
- 向該物件添加命令列引數 parser.add_argument()
- 呼叫parser.parse_args()進行決議
1.設定默認引數函式
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print(args.echo)
(base) my macbook % python script.py haha
haha
(base) my macbook % python script.py -h
usage: script.py [-h] echo
positional arguments:
echo
optional arguments:
-h, --help show this help message and exit
輸入 -h 引數,命令列會提示 positional arguments 是 echo 是必填,
2.設定可選引數函式
- “-”:指定短的引數,如-h
- “–”指定長的引數,如-help
這兩種方式可以同存,也可以只存在一個,
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v","--verbose",help="添加輸出 verbose",action="store_true")
args = parser.parse_args()
if args.verbose:
print("輸入引數成功")
其中action=“store_true”,表示可以不用為引數,-v,指定特定值,
3.型別 type
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-x",type=int,help="輸入數字")
args = parser.parse_args()
y=args.x
answer=y**3+y+1
print(answer)
默認情況下type為str,
(base) my macbook % python script.py -x 2
11
4.可選值 choices=[]
這里設定取值范圍為0、1、2,
import argparse
parser=argparse.ArgumentParser()
parser.add_argument("-square",type=int,help="display number")
parser.add_argument("-v","--verbosity",type=int,choices=[0,1,2],help="increase output verbosity")
args=parser.parse_args()
answer=args.square**2
if args.verbosity==2:
print("the square of {} equals {}".format(args.square,answer))
elif args.verbosity==1:
print("{}^2=={}".format(args.square,answer))
else:
print(answer)
(base) my macbook % python script.py -square 4 -v 0
16
(base) my macbook % python script.py -square 4 -v 1
4^2==16
(base) my macbook % python script.py -square 4 -v 2
the square of 4 equals 16
(base) my macbook % python script.py -square 4 -v 3
usage: script.py [-h] [-square SQUARE] [-v {0,1,2}]
script.py: error: argument -v/--verbosity: invalid choice: 3 (choose from 0, 1, 2)
5.互斥引數
group=parser.add_mutually_exclusive_group()
group.add_argument("-v","--verbose",action="store_true")
group.add_argument("-q","--quiet",action="store_true")
第一行定義一個互斥組,第二、三行在互斥組中添加-v和-q兩個引數,
import argparse
parser=argparse.ArgumentParser(description="my argparse script")
group=parser.add_mutually_exclusive_group()
group.add_argument("-v","--verbose",action="store_true")
group.add_argument("-q","--quiet",action="store_true")
parser.add_argument("-x",type=int,help="the base")
parser.add_argument("-y",type=int,help="the exponent")
args=parser.parse_args()
answer=args.x**args.y
if args.quiet:
print(answer)
elif args.verbose:
print("{} to the power {} equals {}".format(args.x,args.y,answer))
else:
print("{}^{}=={}".format(args.x,args.y,answer))
(base) my macbook % python script.py -h
usage: script.py [-h] [-v | -q] [-x X] [-y Y]
my argparse script
optional arguments:
-h, --help show this help message and exit
-v, --verbose
-q, --quiet
-x X the base
-y Y the exponent
(base) my macbook % python script.py -x 4 -y 2 -v
4 to the power 2 equals 16
(base) my macbook % python script.py -x 4 -y 2 -q
16
(base) my macbook % python script.py -x 4 -y 2
4^2==16
(base) my macbook % python script.py -x 4 -y 2 -v -q
usage: script.py [-h] [-v | -q] [-x X] [-y Y]
script.py: error: argument -q/--quiet: not allowed with argument -v/--verbose
-q 和 -v 不出現,或僅出現一個都可以,同時出現就會報錯
6.引數默認值
parser.add_argument("-x",type=int,help="the base",default=6)
default設定引數默認值
import argparse
parser=argparse.ArgumentParser(description="my argparse script")
parser.add_argument("-x",type=int,help="the base",default=6)
parser.add_argument("-y",type=int,help="the exponent",default=2)
args=parser.parse_args()
answer=args.x**args.y
print(answer)
(base) my macbook % python script.py
36
argparse庫在計算機視覺中的應用
import cv2
from __future__ import print_function
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--image",
help = "Path to the image",default='1.jpg')
args = vars(parser.parse_args())
image1 = cv2.imread(args["image"])
print("width: {}pixels".format(image1.shape[1]))
print("hight: {}pixels".format(image1.shape[0]))
print("channels: {}".format(image1.shape[2]))
cv2.imshow("image", image1)
cv2.waitKey(0)
cv2.destroyAllWindows()
(base) my macbook % python script.py
width: 450pixels
hight: 288pixels
channels: 3
這用到了vars(),是為了能夠像字典一樣訪問 ap.parse_args()的值,即現在 args[“image”]=parser.parse_args()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291390.html
標籤:其他
上一篇:《計算機視覺中的多視圖幾何》筆記(一)有限射影攝像機
下一篇:LabVIEW目標測量方法
