manjaro使用心得 / 中文(注音)輸入法調整
最近決定要將正式從windows畢業,投入linux的懷抱。在接受擁抱前,我決定先用虛擬機測試,寫下調整環境的方法。
<br /><br />
Deeplab是Google做的tensorflow團隊的人所做的研究,他的源碼是放在github的[tensorflow/models/tree/master/research/deeplab](https://github.com/tensorflow/models/tree/master/research/deeplab)
<br /><br />
## 想在不安裝package的情況下,單把deeplab的code挖出來執行的話
1. 把slim的兩個東西
```
/research/slim/deployment
```
```
/research/slim/nets
```
把這兩個資料夾下的所有項目複製放入`models/research/deelab/core/`資料夾裡
2. 把有這行的`.py`檔案全部加入這行`sys.path.append("..")`
```
from deeplab import ...
```
```
sys.path.append("..")
from deeplab import ...
```
<br /><br />
## 程式用法
```
python3 train.py --train_logdir ./models/MOBILENET_v2_CrossEntropy_v2 \ # 給訓練的Model名稱,並且統一放在models/資料夾下
--tf_initial_checkpoint ./models/MOBILENET_v2_CrossEntropy_v1/model.ckpt-1000 # pretrain放的方式
```
這個部分可以自行摸索,但基本上就是`--直接黏著參數名`。
<br /><br />
## 訓練結束檢視時,Tensorboard的用法
那因為程式是有用tensorboard去呈現訓練結果,所以訓練完成後,以`Model為名稱的資料夾`下方會有tfevents
```
ls ./models/MOBILENET_v2_CrossEntropy/events.out.tfevents..
```
所以使用tensorboard的方法只要給`--logdir`參數上一層的資料夾位置。
```
tensorboard --logdir=./models/MOBILENET_v2_CrossEntropy
```
<br /><br />
`train.py`有這些參數:
```
num_clones
train_logdir #這次訓練的checkpoint、tfevent放置資料夾(推薦資料夾名稱包含backbone, loss function名稱等等)
save_summaries_images #True/False,要不要在tfevent裡放image, label, prediction
optimizer #[momentum, adam]擇一
learning_policy #[poly, step]擇一,learning rate的下降方式
base_learning_rate #0.0001 初始training的learning rate
learning_rate_decay_step #2000 每更新幾次model內部參數,learning rate下降
training_number_of_steps #30000 model總更新內部參數次數
tf_initial_checkpoint #None,pretrained model參數
initialize_last_layer #True/False,如果是不同的model,True,如果是同功用的model,False
min_scale_factor #0.5,data augmentation的縮放最小比例,如果圖本來就不大,可能填接近1的數字
max_scale_factor #2,data augmentation的縮放最大比例
dataset #有建立在datasets/data_generator.py的資料集
train_split #用來選擇用於[train, val]的tfrecord,選項在datasets/data_generator.py的splits_to_sizes
dataset_dir #None,datasets/\*Dataset Name\*/tfrecord/
```
<br />
`eval.py`有這些參數:
```
master #跟建立tensorflow cluster有關的,跟train.py的`master`一樣即可,如果只有用一個gpu,保留原始設定的空字串`''`就好
eval_logdir #放置評估模型時,產生的任何檔案
checkpoint_dir #有放訓練好的模型資料夾,與train.py對應是`train_logdir`
eval_batch_size #評估時的batch_size,與train.py的`train_batch_size`對應,目前不清楚train跟eval的batch_size一樣與不一樣會有什麼差別,預設是不一樣
eval_crop_size #應該是進入model時的input size,與train.py的`train_crop_size`對應,不清楚可不可以不一樣,預設是一樣513x513
atrous_rates #就是deeplab提出的atrous convolution,在這裡調空洞比例
output_stride #input_size/output_size的比例,縮小多少倍的意思
eval_scales #選擇評估時,resize input尺寸,1.0就是原始大小
add_flipped_images #要不要把input水平翻轉
quantize_delay_step #同train.py的`quantize_delay_step`
dataset #同train.py的`dataset`
eval_split #用來選擇用於[train, val]的tfrecord,選項在datasets/data_generator.py的splits_to_sizes,同train.py的`train_split`,如果跟train時選擇一樣的dataset,可以用來檢視model是不是正確執行
dataset_dir #同train.py的`dataset_dir`
max_number_of_evaluations #評估要iteration幾次,如果沒有設定,evaluation會無限迴圈
```
<br /><br />
## 錯誤寫法:
預設none的參數,沒有的話,就不要特別寫上去然後加一個`None`給他
```
python3 train.py --tf_initial_checkpoint None # wrong way
```
在寫參數時,就直接忽略掉那個參數就行了
留言
張貼留言