Caffe中使用Net
实现神经网络,这篇文章对应Caffe代码总结Net
的实现。
proto中定义的参数
1 | message NetParameter { |
Input的定义
在train
和deploy
的时候,输入的定义常常是不同的。在train
时,我们需要提供数据$x$和真实值$y$,这样网络的输出$\hat{y} = \mathcal{F}_\theta (x)$与真实值$y$计算损失,bp,更新网络参数$\theta$。
在deploy
时,推荐使用InputLayer
定义网络的输入,下面是$CAFFE/models/bvlc_alexnet/deploy.prototxt
中的输入定义:1
2
3
4
5
6
7
8
9
10
11layer {
name: "data"
type: "Input"
// 该层layer的输出blob名称为data,供后续layer使用
top: "data"
// 定义输入blob的大小:10 x 3 x 227 x 227
// 说明batch size = 10
// 输入彩色图像,channel = 3, RGB
// 输入image的大小:227 x 227
input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } }
}
头文件
Net
的描述头文件位于$CAFFE/include/caffe/net.hpp
中。