net層的功能實現主要涉及到net.hpp和net.cpp文件,讓咱們要捋順它是幹了什麼,是如何實現的。網絡
1. net層使用到的參數
第一步要作的事,就是查看caffe.proto文件,弄清楚net都包含哪些控制參數:函數
- name: 是string格式,表示當前net的名字。
- force_backward: bool類型,表示是否強制net中的每個layer都進行梯度反向傳播操做,若是是否的話, layer是否進行反向傳播則由當時的context決定了。
- state: NetState類型,表示net當前的狀態,NetState包含了phase/level/stage三個成員, 增長sate參數的目的是能夠對一些layer進行有選擇性的進行包含,由於每個layer中包含了一個NetStateRule的參數。
- debug_info: bool類型,表示在網格的forward/backward/update階段是否要打印調試信息。
- layer: LayerParameter類型的列表,表示該net中包含的全部layer的參數,這個很很是重要的,這個layer組成了該net.
- input:
string類型的列表,表示網絡的輸入(每個blob都對應了一個輸入)( 舊版本參數,已遺棄)
- input_shape:
blobshape類型的列表,表示輸入的形狀( 舊版本參數,已遺棄)
- input_dim :
int類型的列表,表示輸出的維度( 舊版本參數,已遺棄)
- layers:
V1LayerParameter的列表( 舊版本參數,已遺棄)
2. net類
成員變量
成員函數