shell腳本長命令帶換行 注釋方法

shell腳本長命令帶換行 注釋方法

命令行傳參

在訓練深度學習網絡時,我們每次實驗通常會有許多超參數需要設置,如batch size, epoch, gpu id, arch甚至還有一些具體的模型結構等。這事我們通常使用python模塊argparse,在命令行進行傳參。

比如這樣:

# train.py
import argparseparser = argparse.ArgumentParser()
parser.add_argument("--batchSize", default=64)
parser.add_argument("--gpu_id", default="0")
parser.add_argument("--split", action='store_true')
config = parser.parse_args()
print(config)# ... your train loop

當然這里為了說明簡化了參數的個數,實際的工程中的超參數肯定比這要多得多。這時我們直接在命令行中傳參并運行:

python train.py --batchSize 32 --split --gpu_id 1

這樣就可以調整每次運行的參數。

shell腳本

超參數還少的時候這樣還行,但是面對巨多的超參數,每次實驗都手敲參數的話未免太麻煩了。所以,稍微進階一點的做法就是用shell腳本的方式將每個參數單行寫進去,然后每次只要更改shell腳本中的數值即可。

# train.sh
python train.py \
--batchSize 32 \
--split \
--gpu_id 1

然后我們每次實驗的時候只需更改shell腳本中的值,然后再命令行中sh train.sh即可。

我們通過輸出驗證一下是否傳參成功:

Namespace(batchSize='32', gpu_id='1', split=True)	

注意事項

注意使用多換行的shell腳本時有兩個注意事項:

  1. 每個換行\后面不能有空格,必須直接跟回車。
  2. 最后一行參數不要有換行符。

具體可以看這篇博客:shell error- unrecognized arguments- \

注釋單行

對于action='store_true'型的參數,我們知道有這個參數,則python程序中該值會直接為True,沒有則值為False。那我們根據在實驗中需要這個值為TrueFalse,就在shell腳本有時希望有這個參數,有時希望沒有。

由于我們又不想改變各個參數再shell腳本中的位置,所以最好不要直接刪掉那一行。那么在shell腳本最中最直接的想法就是直接單行注釋掉這一行,讓我們先來試一下直接注釋能不能行。

# train.sh
python test.py \
--batchSize 32 \
# --split \
--gpu_id 1 \

我們運行sh train.sh試一下,輸出如下:

Namespace(batchSize='32', gpu_id='0', split=False)
test.sh: 4: test.sh: --gpu_id: not found

出大問題,報錯了。其實運行py程序的命令是成功運行了的,因為輸出了Namespace,但是我們發現我們設置的--gpu_id 1參數沒有傳進去。而且后面又報了未找到--gpu_id命令的問題。原因很明顯了:由于多了一個換行,系統將換行之后的參數當作了一個新命令

解決方法是用 反引號`(backtick) 來包裹我們的注釋,就不會破壞掉腳本的語義了,能夠正確解析執行:

# train.sh
python test.py \
--batchSize 32 \
`# --split` \
--gpu_id 1 \

再次嘗試sh train.sh,輸出:

Namespace(batchSize='32', gpu_id='1', split=False)

只將split置為False,其他傳參正常,成功解決。

Ref:

https://www.jb51.net/article/165139.htm

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532816.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532816.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532816.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php對中英文字符串進行截取,利用php怎么對中英文混合的字符串進行截取

利用php怎么對中英文混合的字符串進行截取發布時間:2021-01-04 15:31:24來源:億速云閱讀:103作者:Leah利用php怎么對中英文混合的字符串進行截取?很多新手對此不是很清楚,為了幫助大家解決這個難題&#xf…

Linux查找命令find、loacte、whereis、which、type梳理

Linux查找命令find、loacte、whereis、which、type梳理 Linux操作系統中有5種常用的查找命令:find,locate,whereis,which,type,他們分別用于查找不同的東西,本文將就他們各自的功能進行一下梳理…

php數據關系圖,如何利用navicat查看數據表的ER關系圖

文章背景:(相關推薦:navicat)由于工作需要,現在要分析一個數據庫,然后查看各個表之間的關系,所以需要查看表與表之間的關系圖,專業術語叫做ER關系圖。默認情況下,Navicat顯示的界面是這樣的&…

Linux軟鏈接的使用

Linux軟鏈接的使用 轉自:https://www.cnblogs.com/sueyyyy/p/10985443.html,本博文僅對原博排版稍微優化。 更為細致的硬鏈接、軟鏈接的介紹可參考:Linux中的硬鏈接和軟鏈接 另外,提供筆者對軟連接的一個最簡單的理解&#xff…

oracle死鎖優化,Oracle性能優化之LockContention(轉)

1、概念DML事務使用row-level locks,查詢不會鎖定數據。鎖有兩種模式:exlusive、share。鎖的類型:? DML or data locks:– Table-level locks(TM)– Row-level locks(TX)? DDL or dictionary locks一個transaction至少獲得兩個鎖:一個共享的…

Linux中g++與gcc的區別

轉自:https://blog.csdn.net/bit_clearoff/article/details/53965514 Windows中我們常用vs來編譯編寫好的C和C代碼;vs把編輯器,編譯器和調試器等工具都集成在這一款工具中,在Linux下我們能用什么工具來編譯所編寫好的代碼呢&#…

linux系統可以用迅雷嗎,在Linux系統下使用wine運行迅雷5的方法

在Linux系統下使用wine運行迅雷5的方法一、下載ies4linux去 http://www.tatanka.com.br/ies4linux/page/Installation 下載ies4linux的文件包(目前版本為2.99),然后解壓縮。注意:這個網站被大陸和諧了,需要跳墻。至于怎么跳,諸位就…

從C源代碼到可執行文件的四個過程:預處理、編譯、匯編、鏈接

從C源代碼到可執行文件的四個過程:預處理、編譯、匯編、鏈接 總覽 我們將在Linux操作系統中,以C語言的Hello World程序為例,用gcc編譯器分步執行這四個步驟。 我們有再熟悉不過的HelloWorld程序,hello.c: #include …

uboot引導linux內核,u-boot啟動內核的幾種方式

1.uboot啟動內核的代碼縮減如下:s getenv ("bootcmd");debug ("### main_loop: bootcmd\"%s\"\n", s ? s : "");if (bootdelay > 0 && s && !abortboot (bootdelay)){run_command (s, 0);}2.假設boot…

跟我一起寫makefile: 概述、介紹、規則

跟我一起寫makefile 概述、介紹、規則 轉自:https://seisman.github.io/how-to-write-makefile/rules.html 概述 什么是makefile?或許很多Windows的程序員都不知道這個東西,因為那些Windows的集成開發環境(integrated developm…

linux內核中cent文件夾,Centos 中如何快速定制二進制的內核 RPM 包

1、rpm 制作前的環境準備:yum install -y ncurses-devel qt-devel rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed xmlto audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel newt-devel python-devel zlib-devel bc2、準…

TabError- inconsistent use of tabs and spaces in indentation 查驗及解決方法

TabError: inconsistent use of tabs and spaces in indentation 查驗及解決方法 報錯代碼 def eccv16(pretrainedTrue):model ECCVGenerator()if(pretrained):import torch.utils.model_zoo as model_zoomodel.load_state_dict(torch.load(/home/ps/.cache/torch/hub/check…

linux用xshell編輯文件,Linux遠程管理器xshell和xftp使用教程

Xshell 是一個強大的安全終端模擬軟件,它支持SSH1, SSH2, 以及Microsoft Windows 平臺的TELNET 協議。Xftp 是一個基于 MS windows 平臺的功能強大的SFTP、FTP 文件傳輸軟件。安裝完畢后打開xshell設置網站帳號信息設置主機信息設置服務器帳號設置字符集編碼設置好了…

strict=False 但還是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur

strictFalse 但還是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur 問題 我們知道通過 model.load_state_dict(state_dict, strictFalse)可以暫且忽略掉模型和參數文件中不匹配的參數,先將正常匹配的參數從文件中載入模…

linux中權限765啥意思,Linux中的文件權限

Linux系統中的每一個文件都與多種權限類型相關聯。在這些權限中,我們主要和三類權限打交道:用戶(user)、用戶組(group)和其他用戶(others)。用戶是文件的所有者;用戶組是指和文件所有者在同一組的其他多個用戶的集合;其他用戶是除…

CV中的色彩空間大全

HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV顏色模型 HSV顏色空間 HSV(hue,saturation,value)顏色空間的模型對應于圓柱坐標系中的一個圓錐形子集,圓錐的頂面對應于V1. 它包含RGB模型中的R1,G1,B1 三個面,所代表的…

linux 系統調用時怎么知道當前上下文屬于那個進程,linux – 編寫系統調用來計算進程的上下文切換...

如果您的系統調用只應報告統計信息,則可以使用內核中已有的上下文切換計數代碼.struct rusage {...long ru_nvcsw; /* voluntary context switches */long ru_nivcsw; /* involuntary context switches */};您可以通過運行來嘗試:$/usr/bin/time -v /bin/ls -R....V…

linux串口緩沖區的大小,linux-----------串口設置緩沖器的大小

轉自:http://stackoverflow.com/questions/10815811/linux-serial-port-reading-can-i-change-size-of-input-bufferYou want to use the serial IOCTL TIOCSSERIAL which allows changing both receive buffer depth and send buffer depth (among other things). The maximum…

FLOPs、FLOPS、Params的含義及PyTorch中的計算方法

FLOPs、FLOPS、Params的含義及PyTorch中的計算方法 含義解釋 FLOPS:注意全大寫,是floating point operations per second的縮寫(這里的大S表示second秒),表示每秒浮點運算次數,理解為計算速度。是一個衡量…

設置中文linux輸入ubuntu,Linux_ubuntu怎么設置成中文?ubuntu中文設置圖文方法,  很多朋友安裝ubuntu后,發 - phpStudy...

ubuntu怎么設置成中文?ubuntu中文設置圖文方法很多朋友安裝ubuntu后,發現都是英文,看不懂要怎么辦?其實ubuntu是可以設置成中文的,下文小編就為大家帶來ubuntu中文的設置方法,一起去看下設置方法吧。ubuntu中文設置方…