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类
成员变量
成员函数