1. 程式人生 > >薛開宇學習筆記二之總結筆記--caffe 中solver.prototxt;train_val.prototxt的一些引數介紹

薛開宇學習筆記二之總結筆記--caffe 中solver.prototxt;train_val.prototxt的一些引數介紹

原文地址:http://blog.csdn.net/cyh_24/article/details/51537709

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: 256 backend: 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: 50
        backend: 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 
    丟棄資料的概率

相關推薦

學習筆記總結筆記--caffe solver.prototxttrain_val.prototxt一些引數介紹

原文地址:http://blog.csdn.net/cyh_24/article/details/51537709 solver.prototxt net: "models/bvlc_alexnet/train_val.prototxt" test_iter: 10

學習筆記(三))用自己的資料訓練和測試“CaffeNet”

1.資料準備 原文是用ImageNet1000類的資料庫,本文是自己模仿一個小的資料庫進行下去的,在caffe下新建一個myself資料夾,並在網上下載了訓練貓的圖片60張,測試貓10張,訓練狗的圖片60張,測試狗10張,如圖: 為了方便,對下載的圖片名進行修改,修改

node.js學習筆記版本問題

nodejs targe tle 下一個 .cn blank 網站 mage 功能 一、版本說明 進入node.js官網https://nodejs.org/en/download/ 點擊上面的【All download options】進入到所有下載列表的地址 下載地

多執行緒學習筆記JUC元件

概述   為了對共享資源提供更細粒度的同步控制,JDK5新增了java.util.concurrent(JUC)併發工具包,併發包新增了Lock介面(以及相關實現類)用來實現鎖功能,它提供了與synchronized關鍵字相似的同步功能,只是在使用時需要顯式地獲取和釋放鎖,還具備內建鎖不具備的自由操作鎖

[基礎篇]ESP8266-NonOS學習筆記()Hello World!

相信聰明伶俐的你,肯定完成了上一篇文章的環境搭建,如果你是第一次看本系列文章,可以先去看看前兩篇文章,先了解一下並完成一些基礎操作。 這裡推薦大家安裝一下Git這個灰常炒雞好用的分散式版本管理神器,本人是非常喜歡這款由Linux之父Linus Torvalds開發的工具,可以很方便讓我完成一些工作,比如說c

RocketMQ學習筆記【DefaultMQPushConsumer使用與流程原理分析】

版本:        <dependency>        <groupId>org.apache.rocketmq</groupId>   &

iOS學習選擇器控制元件UIPickerView

UIPickerView是一個簡易的列表控制元件,用於提供有限個數的選項供使用者選擇。 它是通過代理和資料來源的方法對其進行設定和資料來源填充的,這種控制元件的設計模式也是代理模式的應用之一。 新增下面的程式碼即可實現基本功能。 class ViewController: UIViewControlle

mysql筆記資料增刪改查

-- 資料增刪改查(curd)    1. -- 增加 insert          -- 全列插入  值和表的欄位的順序一一對應         -- insert [

MyBatis筆記增刪改查

一、環境配置 將mybatis-3.4.6.jar和lib目錄下的jar包全匯入到專案中,不匯入lib中的jar包會報日誌錯誤。 注意:由於mybatis是基於JDBC實現的,所以需要匯入jdbc的jar包 二、編寫配置檔案 1、在src/pojo目錄下新建U

學習筆記】你知道HTML如何設定字型顏色和大小嗎

接觸過前端開發的人都知道,HTML主要是用來寫頁面佈局的。我們在寫這些佈局時,經常需要設定頁面某些字型的顏色和大小。 那你知道,HTML中如何設定字型顏色和大小嗎?這篇文章就來總結下HTML中設定字型顏色和大小的常見方法有哪些。 常見方法一:通過外部CSS樣式來

Identity Server4學習系列三 Identity Server4學習系列一 Identity Server4學習系列令牌(Token)的概念

1、簡介 在Identity Server4學習系列一和Identity Server4學習系列二之令牌(Token)的概念的基礎上,瞭解了Identity Server4的由來,以及令牌的相關知識,本文開始實戰,實現Identity Server4基本的功能。   2、前提 本文基於.Ne

java1.8實戰學習)——總結:流處理、行為引數化、並行與共享

上一篇:java1.8實戰學習(一) 下一篇:java1.8實戰學習(三) 我們繼續來看 預設方法 在加入所有這些新玩意兒改進Java 的時候, Java 8 設計者發現的一個現實問題就是現有的介面也在改進。比如, Collections.sort方法真的應該屬於Lis

Redis學習系列.Net開發環境搭建及基礎資料結構String字串

一、簡介 Redis有5種基本資料結構,分別是string、list(列表)、hash(字典)、set(集合)、zset(有序集合),這是必須掌握的5種基本資料結構.注意Redis作為一個鍵值對快取系統,其所有的資料結構,都以唯一的key(字串)作為名稱,然後通過key來獲取對應的資料.  

openwrt的研習筆記刷機(TL-WR703N)

昨天是稍微瞭解了下openwrt,今天本想直接進行編譯環節的,但工作有點忙,所以決定直接刷機先吧 先了解結果,再從其他地方朝著刷機的結果進攻會比較好 有目的去做事會比較容易辦成。呵呵 (如果英語比較不錯的,建議還是去看原文,出錯可不怪我哦,o(∩_∩)o) 首

java深入學習檔案

二、檔案和目錄 1.File類 表示為檔案和目錄路徑的抽象,可以理解為沒有指定資訊怎樣從檔案讀取或向檔案儲存,只是描述了檔案的屬性。File物件用來獲取或處理磁碟檔案相關的資訊:如許可權,路徑,修改時間等等。在java中目錄也是File。 2.File類常

Redis筆記Redis命令操作簡介及五種value資料型別

Redis是使用鍵值儲存資料,key必須是字串value支援五種資料型別,最新版本又新增加了兩種這裡暫不介紹。下面會介紹redis的一些基本命令的使用。 首先啟動redis並登入客戶端。   Redis中的命令不區分大小寫。 一:基本命令及string型別 1:help

Kafka筆記Topic操作,檔案引數配置

以下的例子我只啟動了一個shb01,沒有加入139 主題Topic的一般操作(增刪改查),通過指令碼kafka-topics.sh來執行 建立 [[email protected] bin]# kafka-topics.sh --create--topic hel

Spring Boot學習(十)Spring Boot使用@Async實現非同步呼叫

什麼是“非同步呼叫”?“非同步呼叫”對應的是“同步呼叫”,同步呼叫指程式按照定義順序依次執行,每一行程式都必須等待上一行程式執行完成之後才能執行;非同步呼叫指程式在順序執行時,不等待非同步呼叫的語句返回

JNI學習(C原始碼Log輸出及常見錯誤)

瞭解jni JNI 即Java Native Interface ,Java本機介面。可以實現Java和C/C++之間的相互呼叫。 為什麼使用JNI? 擴充套件了Java虛擬機器的能力,C語言可以進行驅動開發,比如wifi共享熱點的驅動 Native c

[分散式學習]訊息佇列rocketmq筆記

文件地址 RocketMQ架構 嗶哩嗶哩上的視訊 mq有很多,近期買了《分散式訊息中介軟體實踐》這本書,學習關於mq的相關知識。mq大致有有4個功能: 非同步處理。比如業務端需要給使用者傳送郵件,不需要等傳送完了之後才讓業務端的呼叫程式碼返回。 服務解耦。服務之間呼叫不需要在程式碼上寫死呼叫某某服務,只