從零開始理解caffe網路的引數
LeNet網路介紹
LeNet網路詳解
網路名稱
name: "LeNet" # 網路(NET)名稱為LeNet
mnist層-train
layer { # 定義一個層
name: "mnist" # 層名字mnist
type: "Data" # 層的型別,資料層
top: "data" # 層的輸出blob有兩個;data和label
top: "label" # blob是資料庫中用來儲存二進位制檔案的欄位型別
include {
phase: TRAIN # 該層僅在訓練階段有效
}
transform_param {
scale: 0.00390625 # 資料變換使用的資料縮放因子
}
data_param { # 資料層引數
source: "A:/Caffe/caffe/examples/mnist/mnist-train-leveldb" # 資料路徑
batch_size: 64 # 批量數目,一次讀取64張圖
backend: LEVELDB # 資料格式為LEVELDB
}
}
mnist層-test
layer { # 同是名為mnist且輸出為data和label的資料層,只是定義的引數只在檢測階段有效
name: "mnist"
type: "Data"
top: "data"
top: "label"
include {
phase: TEST
}
transform_param {
scale: 0.00390625
}
data_param {
source: "A:/Caffe/caffe/examples/mnist/mnist-test-leveldb"
batch_size: 1
backend: LEVELDB
}
}
卷積層1
# lr_mult: 學習率的係數,最終的學習率是這個數乘以solver.prototxt配置檔案中的base_lr。
# 如果有兩個lr_mult, 則第一個表示權值的學習率,第二個表示偏置項的學習率。一般偏置項的學習率是權值學習率的兩倍。
layer { # 定義了一個卷積層conv1
name: "conv1"
type: "Convolution"
bottom: "data" # 輸入blob為data
top: "conv1" # 輸出blob為conv1
param {
lr_mult: 1 # 全域性學習速率倍乘因子,1表示與全域性引數一致
}
param {
lr_mult: 2 # bias學習速率倍乘因子,是全域性引數的2倍
}
convolution_param { # 卷積計算引數
num_output: 20 # 輸出feature map數量為20
kernel_size: 5 # 卷積核尺寸,5X5
stride: 1 # 卷積輸出跳躍間隔,1表示連續輸出,無跳躍
weight_filler { # 權值使用xavier填充器
type: "xavier"
}
bias_filler {
type: "constant" # bias使用常數填充器,預設是0
}
}
}
下采樣層pool1
layer { # 下采樣層pol1,輸入conv1,輸出pool1
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX # 最大值下采樣法
kernel_size: 2 # 下采樣視窗尺寸2X2
stride: 2 # 下采樣輸出跳躍間隔2X2
}
}
卷積層2
layer {
name: "conv2"
type: "Convolution"
bottom: "pool1"
top: "conv2"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
convolution_param {
num_output: 50
kernel_size: 5
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
下采樣層pool2
layer {
name: "pool2"
type: "Pooling"
bottom: "conv2"
top: "pool2"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
全連線層1
layer { # 全連線層
name: "ip1"
type: "InnerProduct"
bottom: "pool2"
top: "ip1"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
inner_product_param {
num_output: 500 # 該層輸出引數 500X500
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
採用ReLU的非線性層
layer { # 非線性層,用ReLU方法
name: "relu1"
type: "ReLU"
bottom: "ip1"
top: "ip1"
}
全連線層2
layer {
name: "ip2"
type: "InnerProduct"
bottom: "ip1"
top: "ip2"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
inner_product_param {
num_output: 10
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
accuracy層
layer { # 分類準確率層
name: "accuracy"
type: "Accuracy"
bottom: "ip2"
bottom: "label"
top: "accuracy"
include {
phase: TEST
}
}
損失層
layer { # 損失層
name: "loss"
type: "SoftmaxWithLoss" # 採用softmax迴歸
bottom: "ip2"
bottom: "label"
top: "loss"
}
網路結構圖
參考資料:《深度學習-21天實戰Caffe》
相關推薦
從零開始理解caffe網路的引數
LeNet網路介紹 LeNet網路詳解 網路名稱 name: "LeNet" # 網路(NET)名稱為LeNet mnist層-train layer {
從零開始學caffe(四):mnist手寫數字識別網路結構模型和超引數檔案的原始碼閱讀
下面為網路結構模型 %網路結構模型 name: "LeNet" #網路的名字"LeNet" layer { #定義一個層 name: "mnist" #層的名字"mnist" type:
從零開始系列-Caffe從入門到精通之一 環境搭建
python 資源暫時不可用 強制 rec htm color 查看 cpu blog 先介紹下電腦軟硬件情況吧: 處理器:Intel? Core? i5-2450M CPU @ 2.50GHz × 4 內存:4G 操作系統:Ubuntu Kylin(優麒麟) 16.04
從零開始理解JAVA事件處理機制(2)
extend nds 接下來 htm ref param 簡單 tostring ansi 第一節中的示例過於簡單《從零開始理解JAVA事件處理機制(1)》,簡單到讓大家覺得這樣的代碼簡直毫無用處。但是沒辦法,我們要繼續寫這毫無用處的代碼,然後引出下一階段真正有益的代碼。
從零開始理解氣泡排序
氣泡排序是一種基礎的入門級別的演算法,它的效率比較低,但是理解它的好處是讓我們對演算法有初步的瞭解,理解了氣泡排序,不僅僅是讓我們寫出一個簡單演算法,完成入門,筆者認為寫出一段程式除了能夠給我們帶來收入以外,如果你能從寫的程式碼中感受到一絲快樂,這是一種精神享受。下面就讓我們開始理解氣泡排序演算法,
從零開始山寨Caffe·貳:主存模型
本文轉自:https://www.cnblogs.com/neopenx/p/5190282.html 從硬體說起 物理之觴 大部分Caffe原始碼解讀都喜歡跳過這部分,我不知道他們是什麼心態,因為這恰恰是最重要的一部分。 記憶體的管理不擅,不僅會導致程式的立即崩潰,還會導致記憶體的
從零開始學caffe(七):利用GoogleNet實現影象識別
一、準備模型 在這裡,我們利用已經訓練好的Googlenet進行物體影象的識別,進入Googlenet的GitHub地址,進入models資料夾,選擇Googlenet 點選Googlenet的模型下載地址下載該模型到電腦中。 模型結構 在這裡,我們利用之前講
從零開始學caffe(十):caffe中snashop的使用
在caffe的訓練期間,我們有時候會遇到一些不可控的以外導致訓練停止(如停電、裝置故障燈),我們就不得不重新開始訓練,這對於一些大型專案而言是非常致命的。在這裡,我們介紹一些caffe中的snashop。利用snashop我們就可以實現訓練的繼續進行。 在之前我們訓練得到的檔案中,我們發現
從零開始學caffe(九):在Windows下實現影象識別
本系列文章主要介紹了在win10系統下caffe的安裝編譯,運用CPU和GPU完成簡單的小專案,文章之間具有一定延續性。 step1:準備資料集 資料集是進行深度學習的第一步,在這裡我們從以下五個連結中下載所需要的資料集: animal flower plane hou
從零開始學caffe(八):Caffe在Windows環境下GPU版本的安裝
之前我們已經安裝過caffe的CPU版本,但是在MNIST手寫數字識別中,我們發現caffe的CPU版本執行速度較慢,訓練效率不高。因此,在這裡我們安裝了caffe的GPU版本,並使用GPU版本的caffe同樣對手寫MNIST數字集進行訓練。 step1: 安裝CUDA
從零開始學caffe(二):caffe在win10下的安裝編譯
環境要求 作業系統:64位windows10 編譯環境:Visual Studio 2013 Ultimate版本 安裝流程 step1:檔案的下載 從GitHub新增連結描述中下載Windows版本的caffe,並進行解壓到電腦中。 step2:檔案修改 將壓縮包
從零開始搭建神經網路 (一) 基礎知識
1.什麼是人工神經網路 神經網路起源於對生物神經元的研究,如下圖所示生物神經元包括細胞體,樹突,軸突等部分。其中樹突是用於接受輸入資訊,輸入資訊經過突觸處理,當達到一定條件時通過軸突傳出,此時神經
從零開始山寨Caffe·柒:KV資料庫
你說你會關係資料庫?你說你會Hadoop? 忘掉它們吧,我們既不需要網路支援,也不需要複雜關係模式,只要讀寫夠快就行。 ——論資料儲存的本質 淺析資料庫技術 記憶體資料庫——STL的map容器 關係資料庫橫行已久,似乎大
從零開始山寨Caffe·玖:BlobFlow
聽說Google出了TensorFlow,那麼Caffe應該叫什麼? ——BlobFlow 神經網路時代的傳播資料結構 我的程式碼 我最早手寫神經網路的時候,Flow結構是這樣的: struct Data { vector<d
從零開始山寨Caffe·陸:IO系統(一)
你說你學過作業系統這門課?寫個無Bug的生產者和消費者模型試試! ——你真的學好了作業系統這門課嘛? 在第壹章,展示過這樣圖: 其中,左半部分構成了新版Caffe最惱人、最龐大的IO系統。 也是歷來最不重視的一部分。 第伍章又對左半
從零開始山寨Caffe·捌:IO系統(二)
生產者 雙緩衝組與訊號量機制 在第陸章中提到了,如何模擬,以及取代根本不存的Q.full()函式。 其本質是:除了為生產者提供一個成品緩衝佇列,還提供一個零件緩衝佇列。 當我們從外部給定了固定容量的零件之後,生產者的產能就受到了限制。 由兩個阻塞佇列組成的QueuePair,並不是Caffe的獨創,
從零開始山寨Caffe·伍:Protocol Buffer簡易指南
你為Class外訪問private物件而苦惱嘛?你為設計序列化格式而頭疼嘛? ——歡迎體驗Google Protocol Buffer 面向物件之封裝性 歷史遺留問題 面向物件中最矛盾的一個特性,就是“封裝性”。 在上古時期,大牛們無聊地設計了
從零開始山寨Caffe·拾貳:IO系統(四)
消費者 回憶:生產者提供產品的介面 在第捌章,IO系統(二)中,生產者DataReader提供了外部消費介面: class DataReader { public: ......... BlockingQueue<Datum*>& free() const
從零開始山寨Caffe·拾:IO系統(三)
資料變形 IO(二)中,我們已經將原始資料緩衝至Datum,Datum又存入了生產者緩衝區,不過,這離消費,還早得很呢。 在消費(使用)之前,最重要的一步,就是資料變形。 ImageNet ImageNet提供的資料相當Raw,不僅影象尺寸不一,ROI焦點內容比例也不一,如圖: [Krizhev
ubuntu 14.04 從零開始安裝caffe
一、前言 很多人不太喜歡看官方教程,但其實 caffe 的官方安裝指導做的非常好。我在看到 2) 之前,曾根據官方指導在 OSX 10.9, 10.10, Ubuntu 12.04, 14.04 下安裝過 10 多次不同版本的 caffe,都成功了。 本文有不少內容參考了 1)和 2),但又有一些內容