国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

caffe的python接口學習(2):生成solver文件

2019-11-06 08:25:13
字體:
來源:轉載
供稿:網友

caffe在訓練的時候,需要一些參數設置,我們一般將這些參數設置在一個叫solver.PRototxt的文件里面,如下:

復制代碼
base_lr: 0.001display: 782gamma: 0.1lr_policy: “step”max_iter: 78200momentum: 0.9snapshot: 7820snapshot_prefix: “snapshot”solver_mode: GPUsolver_type: SGDstepsize: 26067test_interval: 782test_iter: 313test_net: “/home/xxx/data/val.prototxt”train_net: “/home/xxx/data/proto/train.prototxt”weight_decay: 0.0005復制代碼

有一些參數需要計算的,也不是亂設置。

假設我們有50000個訓練樣本,batch_size為64,即每批次處理64個樣本,那么需要迭代50000/64=782次才處理完一次全部的樣本。我們把處理完一次所有的樣本,稱之為一代,即epoch。所以,這里的test_interval設置為782,即處理完一次所有的訓練數據后,才去進行測試。如果我們想訓練100代,則需要設置max_iter為78200.

同理,如果有10000個測試樣本,batch_size設為32,那么需要迭代10000/32=313次才完整地測試完一次,所以設置test_iter為313.

 學習率變化規律我們設置為隨著迭代次數的增加,慢慢變低。總共迭代78200次,我們將變化lr_rate三次,所以stepsize設置為78200/3=26067,即每迭代26067次,我們就降低一次學習率。 

下面是生成solver文件的python代碼,比較簡單:

復制代碼
# -*- coding: utf-8 -*-"""Created on Sun Jul 17 18:20:57 2016@author: root"""path='/home/xxx/data/'solver_file=path+'solver.prototxt'     #solver文件保存位置sp={}sp['train_net']=‘“’+path+'train.prototxt”'  # 訓練配置文件sp['test_net']=‘“’+path+'val.prototxt”'     # 測試配置文件sp['test_iter']='313'                  # 測試迭代次數sp['test_interval']='782'              # 測試間隔sp['base_lr']='0.001'                  # 基礎學習率sp['display']='782'                    # 屏幕日志顯示間隔sp['max_iter']='78200'                 # 最大迭代次數sp['lr_policy']='“step”'                 # 學習率變化規律sp['gamma']='0.1'                      # 學習率變化指數sp['momentum']='0.9'                   # 動量sp['weight_decay']='0.0005'            # 權值衰減sp['stepsize']='26067'                 # 學習率變化頻率sp['snapshot']='7820'                   # 保存model間隔sp['snapshot_prefix']=‘"snapshot"’       # 保存的model前綴sp['solver_mode']='GPU'                # 是否使用gpusp['solver_type']='SGD'                # 優化算法def write_solver():    #寫入文件    with open(solver_file, 'w') as f:        for key, value in sorted(sp.items()):            if not(type(value) is str):                raise TypeError('All solver parameters must be strings')            f.write('%s: %s/n' % (key, value))if __name__ == '__main__':    write_solver()復制代碼

 執行上面的文件,我們就會得到一個solver.prototxt文件,有了這個文件,我們下一步就可以進行訓練了。

當然,如果你覺得上面這種鍵值對的字典方式,寫起來容易出錯,我們也可以使用另外一種比較簡便的方法,沒有引號,不太容易出錯,如下:

復制代碼
# -*- coding: utf-8 -*-from caffe.proto import caffe_pb2s = caffe_pb2.SolverParameter()path='/home/xxx/data/'solver_file=path+'solver1.prototxt's.train_net = path+'train.prototxt's.test_net.append(path+'val.prototxt')s.test_interval = 782  s.test_iter.append(313) s.max_iter = 78200 s.base_lr = 0.001 s.momentum = 0.9s.weight_decay = 5e-4s.lr_policy = 'step's.stepsize=26067s.gamma = 0.1s.display = 782s.snapshot = 7820s.snapshot_prefix = 'shapshot's.type = “SGD”s.solver_mode = caffe_pb2.SolverParameter.GPUwith open(solver_file, 'w') as f:    f.write(str(s))復制代碼
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漠河县| 新疆| 濮阳市| 永靖县| 邯郸市| 江口县| 鲁山县| 灌阳县| 太湖县| 寿阳县| 信丰县| 当阳市| 独山县| 达日县| 宁陕县| 石屏县| 雅安市| 泗水县| 延吉市| 漳州市| 青河县| 桐柏县| 静乐县| 六安市| 清镇市| 康保县| 亳州市| 鄂托克旗| 永兴县| 新安县| 邵阳市| 九江县| 宣化县| 钟山县| 东阿县| 玛纳斯县| 云和县| 雷波县| 安仁县| 九寨沟县| 金塔县|