【深度學習】caffe 中的一些參數介紹

一個優秀的算法工程師51%的時間在調參數,48%的時間在測試模型,剩下的1%時間再寫代碼。

段子雖然是網上看來的,但調參數是真的心碎。像我這樣的小萌新更是覺得無從下手。只有知己知彼(了解每個參數的含義),才能百戰百勝。
本文參考自仙道菜的博客,小部分自己的理解與修改。

caffe 參數介紹

solver.prototxt

net: "models/bvlc_alexnet/train_val.prototxt" 
test_iter: 1000       # 
test_interval: 1000   # 
base_lr: 0.01         # 開始的學習率
lr_policy: "step"     # 學習率的drop是以gamma在每一次迭代中
gamma: 0.1
stepsize: 100000      # 每stepsize的迭代降低學習率:乘以gamma
display: 20           # 每display次打印顯示loss
max_iter: 450000      # train 最大迭代max_iter 
momentum: 0.9         #
weight_decay: 0.0005  #
snapshot: 10000       # 每迭代snapshot次,保存一次快照
snapshot_prefix:   "models/bvlc_reference_caffenet/caffenet_train"
solver_mode: GPU      # 使用的模式是GPU

test_iter:
在測試的時候,需要迭代的次數,即test_iter* batchsize(測試集的)=測試集的大小,測試集的 batchsize可以在prototx文件里設置。

test_interval:
訓練的時候,每迭代test_interval次就進行一次測試。

momentum:
靈感來自于牛頓第一定律,基本思路是為尋優加入了“慣性”的影響,這樣一來,當誤差曲面中存在平坦區的時候,SGD可以更快的速度學習。
wi←m?wi?η?E?wi

train_val.prototxt

layer { # 數據層name: "data"type: "Data"top: "data"top: "label"include {phase: TRAIN # 表明這是在訓練階段才包括進去}transform_param { # 對數據進行預處理mirror: true # 是否做鏡像crop_size: 227# 減去均值文件mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"}data_param { # 設定數據的來源source: "examples/imagenet/ilsvrc12_train_lmdb"batch_size: 256backend: LMDB}
}
layer {name: "data"type: "Data"top: "data"top: "label"include {phase: TEST # 測試階段}transform_param {mirror: false # 是否做鏡像crop_size: 227# 減去均值文件mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"}data_param {source: "examples/imagenet/ilsvrc12_val_lmdb"batch_size: 50backend: LMDB}
}

lr_mult:
學習率,但是最終的學習率需要乘以 solver.prototxt 配置文件中的 base_lr .

如果有兩個 lr_mult, 則第一個表示 weight 的學習率,第二個表示 bias 的學習率,一般 bias 的學習率是 weight 學習率的2倍。

decay_mult:
權值衰減,為了避免模型的over-fitting,需要對cost function加入規范項。
wi←wi?η?E?wi?ηλwi

num_output:
卷積核(filter)的個數

kernel_size:
卷積核的大小。

如果卷積核的長和寬不等,需要用 kernel_h 和 kernel_w 分別設定

stride:
卷積核的步長,默認為1。也可以用stride_h和stride_w來設置。

pad:
擴充邊緣,默認為0,不擴充。

擴充的時候是左右、上下對稱的,比如卷積核的大小為5*5,那么pad設置為2,則四個邊緣都擴充2個像素,即寬度和高度都擴充了4個像素,這樣卷積運算之后的特征圖就不會變小。
也可以通過pad_h和pad_w來分別設定。

weight_filler:
權值初始化。 默認為“constant”,值全為0.
很多時候我們用”xavier”算法來進行初始化,也可以設置為”gaussian”

weight_filler {type: "gaussian"std: 0.01
}

bias_filler:

偏置項的初始化。一般設置為”constant”, 值全為0。

bias_filler {type: "constant"value: 0
}

bias_term:
是否開啟偏置項,默認為true, 開啟

group
分組,默認為1組。如果大于1,我們限制卷積的連接操作在一個子集內。
卷積分組可以減少網絡的參數,至于是否還有其他的作用就不清楚了。

每個input是需要和每一個kernel都進行連接的,但是由于分組的原因其只是與部分的kernel進行連接的
如: 我們根據圖像的通道來分組,那么第i個輸出分組只能與第i個輸入分組進行連接。

pool
池化方法,默認為MAX。目前可用的方法有 MAX, AVE, 或 STOCHASTIC

dropout_ratio
丟棄數據的概率

轉載于:https://www.cnblogs.com/guweixin/p/10439881.html

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

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

相關文章

Vue學習筆記(二)—— vue項目中使用axios

一、文檔鏈接 axios文檔 vue開發插件 二、axios 簡介 axios 是一個基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端,它本身具有以下特征: 從瀏覽器中創建 XMLHttpRequest 從 node.js 發出 http 請求 支持 Promise API 攔截請求和響應 轉換請求和響應…

es6 --- promise.prototype.then的鏈式引用

很多時候,我們需要使用ajax請求獲取數據A.并使用A中的數據A.a來進行下一步的Ajax操作… 下面使用promise.prototype.then的鏈式引用來實現 // 首先封裝一個getJSON的方法. var getJSON function (url) {var promise new Promise(function (resolve, reject) {var client ne…

jquery對json 鍵值對或數組的增加、刪除、遍歷操作

在前端遍歷json鍵值對或數組遍歷的情況也會經常用到,我們知道在java、c#其它的語言里提供方便的方法來操作,那么在json里面有沒有類似的方法呢,廢話就不多說了上代碼:var jsonStr{}; //增加 jsonStr["name1"]"yu&q…

廖雪峰老師Git教程代碼梳理

建立版本庫 創建一個版本庫非常簡單,首先,選擇一個合適的地方,創建一個空目錄(repository): $ mkdir learngit //創建learngit目錄 $ cd learngit //切換當前目錄為learngit目錄 $ pwd //用于顯示當…

BZOJ2006 [NOI2010]超級鋼琴 【堆 + RMQ】

2006: [NOI2010]超級鋼琴 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 3446 Solved: 1692[Submit][Status][Discuss]Description 小Z是一個小有名氣的鋼琴家,最近C博士送給了小Z一架超級鋼琴,小Z希望能夠用這架鋼琴創作出世界上最美妙的音樂。 這…

Vue項目代碼改進(六)—— vue的mixins的使用

混入可以將不同組件的共同內容部分在一個混入對象中展示,然后通過在組件實例中混入這個對象,這樣擁有這些屬性的組件都可以調用 混入對象中的屬性名跟組件中的屬性名沖突時,以組件自身的為基準 舉例:單文件組件users.vue 1&#x…

es6 --- Promise.catch

Promise.prototype.catch(): 是.then(null, rejection)的別名,用于指定發生錯誤時的回調函數 p.then( (val) -> console.log(fulfilled:, val)).catch( (err) > console.log(rejected, err));// 等同于 p.then( (val) > console.log(fulfilled:, val)).then(null, (e…

爬蟲的一些工具(二)

爬蟲的一些工具(二) 1. 常有的工具 (1). python(2). pycharm(3).瀏覽器i.chromeii.火狐(4).fiddler的使用2 fiddler的使用 (1).操作界面(2)界面含義請求(Request)部分詳解名稱含義Headers顯示客戶端發送到服務器的 HTTP 請求的,header 顯示為一個分級視圖,包含了 We…

微信開發者工具一打開代碼編輯區文件全部不見了

今天開微信開發者工具時,一打開竟然文件全部不見了!然后頁面也編譯不出來,搜了一下大神們的建議: 1、在編輯器控制臺輸入:openVendor 回車 會打開一個文件夾:C:\Users\Administrator\AppData\Local\微信we…

vue項目中所使用的element-UI / echarts

高清版思維導圖見后臺管理項目地址 1.login登錄頁面 < el-form >表單 在 Form 組件中&#xff0c;每一個表單域由一個 Form-Item 組件構成&#xff0c;表單域中可以放置各種類型的表單控件&#xff0c;包括 Input、Select、Checkbox、Radio、Switch、DatePicker、TimeP…

es6 --- 使用yield*命令遍歷完全二叉樹

首先定義二叉樹的結構: // 定義二叉樹的結構 function Tree(left, label, right) {this.left left;this.label label;this.right right; }// 對二叉樹采用中序遍歷 function* inorder(t) {if(t) {yield* inorder(t.left);yield t.label;yield* inorder(t.right);} }// 生成…

面向對象之繼承與派生

閱讀目錄 一 初識繼承二 繼承與抽象&#xff08;先抽象再繼承&#xff09;三 繼承與重用性四 派生五 組合與重用性六 接口與歸一化設計七 抽象類八 繼承實現的原理&#xff08;可惡的菱形問題&#xff09;九 子類中調用父類的方法一 初識繼承 什么是繼承 繼承是一種創建新類的方…

SpringBoot(十三)-- 不同環境下讀取不同配置

一、場景&#xff1a; 在開發過程中 會使用 開發的一套數據庫&#xff0c;測試的時候 又會使用測試的數據庫&#xff0c;生產環境中 又會切換到生產環境中。常用的方式是 注釋掉一些配置&#xff0c;然后釋放一下配置。SpringBoot提供了在不同環境下切換不同配置的功能&#xf…

MDN文檔基礎知識搜集

Array數組&#xff0c;一種允許你存儲多個值在一個引用里的結構。var myVariable [1,Bob,Steve,10]; 引用數組的元素只需&#xff1a;myVariable[0], myVariable[1], 等等. 發布工具: FTP 客戶端 你還需要一種將文件從本地硬盤上傳到遠程Web服務器的方法。 為了做到這一點&am…

vue-cli生成項目時你應當知道的

一、安裝 npm install -g vue-cli二、創建項目 vue init 模板名 項目名 vue init webpack mymall模板名: 1 . webpack 最常用 2 . webpack-simple // 一個簡單webpackvue-loader的模板&#xff0c;不包含其他功能。 3 . browserify // 一個全面的Browserifyvueify 的模板&am…

es6 --- 正確獲取Generator函數內部的this對象使其可以使用new

首先看2個例子 function * g() {this.a 11; }let o g(); console.log(o.a);可以看見Generator函數里面的this指向的對象取不出來. 再看下一個例子: function* F() {yield this.x 2;yield this.y 3; } new F();可以看出Generator函數無法使用new操作符, 下面一共一個解決…

mysql三-3:完整性約束

閱讀目錄 一 介紹二 not null與default三 unique四 primary key五 auto_increment六 foreign key七 作業一 介紹 約束條件與數據類型的寬度一樣&#xff0c;都是可選參數 作用&#xff1a;用于保證數據的完整性和一致性主要分為&#xff1a; PRIMARY KEY (PK) 標識該字段為該…

LOL

[分享] 從《LOL》談游戲中的隨機動作優化 http://bbs.gameres.com/thread_472292.html 光子工作室陳宇復盤《全民突擊》研發歷程&#xff08;完整版&#xff09; https://mp.weixin.qq.com/s?__bizMjM5OTc2ODUxMw&mid400110877&idx2&sn372fd6492a9d8dd1791d87eb2c…

超級簡易法上傳本地文件到github上

之前文章寫過廖雪峰老師關于git教程的帖子&#xff0c;現在終于有時間實踐了&#xff01;我這段時間在學微信小程序版的貪吃蛇&#xff0c; 想著先把寫好的文件上傳試試&#xff0c;于是乎&#xff0c;便有了如下…… 大家要是不想聽廢話可以拉到最后去…… 1、我先在github…

es6 --- 對任意對象部署可遍歷接口

有時候需要對對象進行遍歷,下面提供一個比較方便的接口, 其基本思路是,首先得到對象的所有鍵(key), 然后將其放在yield* 后面. yield* 可以通過 for … of … 循環遍歷 具體實現如下: function* iterEntries (obj) {let keys Object.keys(obj);for ( let i 0; i < keys.…