1.現在的python通常使用argparse來傳參,可以在運行python文件時對超參數的值進行改變,可以不用改變代碼,也可以多組參數同時測試。
但是如果要對大量超參數進行嘗試(煉丹)時,手動輸入似乎力有不逮。因此shell腳本就有用武之地。
可以用一個循環將所有超參數依次輸入。
for((i=1000;i<=40000;i=i+1000));
do
python test.py -m params/${i}.pth
done
但是要注意,shell在windows下的換行符和linux下的不通用。
解決方法:
https://blog.csdn.net/MyOracleFei/article/details/103142172?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control
(在notepad++ 中,編輯→文檔格式轉換→轉為Unix格式,然后再去Linux中運行腳本,就可以了。)
2.but:
filename='test_0.0.lst'
for line in $(cat $filename)
do
echo "data_dir = '../result/param_0.0/${line}'"
done
-----------------------------------------
實際輸出: "ir="/lee/bdcn_500_full 期待輸出: dir="/lee/bdcn_500_full"
這是因為依賴的test_0.0.lst文件編碼方式是windows的,亂碼了。需要將test_0.0.lst文件同樣用Notepad++轉碼一下。
3.另外:如果覺得Notpad++麻煩,也可以在pycharm里面直接改編碼:界面右下角


選這個就可以。
雖然看起來不如notpad++直觀(notpad++要設置可見所有字符),但是勝在方便。
4.注意:與python不同,shell對空格敏感,多余的空格會報錯(不是所有的都會報錯,但是何必為難自己?),不要加多余的空格
