欢迎访问我的个人博客:zengzeyu.com
导言
源码位置:caffe/examples/pycaffe/caffenet.py
该文件源代码是经典模型AlexNet的Caffe实现,有兴趣的小伙伴去拜读一下论文: ImageNet Classification with Deep Convolutional Neural Networks.
源码解读
1. 导入模块
from __future__ import print_function
from caffe import layers as L, params as P, to_proto
from caffe.proto import caffe_pb2
2. 定义Layer函数
包括: 卷积层(Convolution Layer)、全连接层(Full Connected Layer)和池化层(Pooling Layer)
2.1 卷积层(Convolution Layer)函数
def conv_relu(bottom, ks, nout, stride=1, pad=0, group=1):
conv = L.Convolution(bottom, kernel_size=ks, stride=stride,
num_output=nout, pad=pad, group=group)
return conv, L.ReLU(conv, in_place=True)
1. 函数输入
- bottom
- 输入节点(blob
)名
- ks
- 卷积核尺寸(kernel size
)
- nout
- 输出深度尺寸(number output
)
- stride
- 卷积核滑窗距离
- pad
- 图像边缘添加尺寸,即在图像周围一周添加尺寸为pad
的空白像素
- group
- 将数据进行分开训练堆数目
2. 调用Caffe卷基层生成函数
- conv = L.Convolution(bottom, kernel_size=ks, stride=stride,num_output=nout, pad=pad, group=group)
3. 返回参数