caffe 如何讓反向傳播不更新某些層

2021-08-10 04:58:35 字數 635 閱讀 2573

caffe程式中,有時候我們不需要更新某些層,那麼我們該怎麼做呢?

假設共有5個卷積層,conv1,conv2,conv3,conv4,conv5

為了方便,假設只有這5個卷積層,沒有pool層與relu層

卷積層的定義為

layer

bias_filler }

} 1.如果希望conv1,conv2,conv3都不更新,

那麼在conv4的layer定義中,可以新增一句propagate_down : 0

即將層定義修改為:

layer

bias_filler }

} 通過增加的propagate_down : 0,反向傳播會終止在conv4層,忽略conv1,conv2,conv3

2.如果只是希望conv3不更新,conv1,conv2與conv4,conv5都更新:

那麼可以將conv3的學習率設為0 即:

layer

param

convolution_param

bias_filler }}

將weight_filter與bias_filter的學習率均設為0即可

參考:

caffe反向傳播計算 softmax

loss layers.hpp ifndef caffe loss layer hpp define caffe loss layer hpp include include caffe blob.hpp include caffe layer.hpp include caffe proto caf...

caffe 前向傳播和反向傳播

caffe學習筆記3從3.1開始主要翻譯一下caffe的官方文件,寫的非常好,忍不住要作一下。本篇翻譯來自caffe官網的 前向傳播和反向傳播是計算神經網路非常重要的部分。考慮乙個簡單的邏輯回歸分類問題 前向傳播 通過網路的輸入計算輸出結果的過程,在前向傳播中,caffe整合每一層的計算得到整個模型...

神經網路反向傳播更新原理

a 輸入x w1和b2 中間輸出h 省略很多層 wi和bi 輸出y loss函式 b 現在的需求是loss取最小值,可以求出loss對所有引數的梯度,讓沿梯度下降的方向更新引數,例如w1 w1 lr loss w1 c 這樣多次更新,各個引數就一直在往loss的極小值處靠,並且某些引數的梯度為0之後...