caffe笔记(一)--官方教程整理

本文详细介绍了Caffe框架的目录结构,重点关注net.cpp、layers文件夹和数据层的实现。讲解了Convolution、Pooling、LRN、Loss层、Accuracy、Activation等层的功能和参数设置。还探讨了数据层如Data、MemoryData、HDF5Data等的使用,并提供了训练、测试和诊断的命令行工具使用说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Caffe目录结构:核心代码在caffe/src/caffe



*net.cpp:定义网络,整个网络中含有很多layers. net.cpp负责计算整个网络在训练中的forward\backward过程,也就是计算各个层

gradient

一个典型的net开始于datalayer(从磁盘中加载数据),终止于losslayer(计算目标函数)

*layers文件夹:各种层的定义,在protobuffer中调用时包含name,type(data,conv,pool...)connectionstructure(input blobs and out

blobs),layer-spectific parameters(convkernel大小)。定义一个layer需要定义其

setup\在模型初始化时重置layers及其相互之间的关系

forward\bottom层接受数据,进行计算后将输出送入top层中

backward\给定相对于top层输出的梯度,计算其相对于输入的梯度并传递到bottom

前向和后向函数分别有GPUCPU两种实现方式。如果没有实现gpu版本,那么layer讲转向作为备用选项的cpu方式。尽管这样会增加

额外的数据传输成本(输入数据由gpu复制到cpu上,之后输出数据从cpu复制到gpu上),但是对于做一些快速的实验这还是很方便


1.Convolution:必填项:1.num_output:指定卷积核的数量

                                    2.kernel_size:指定卷积核的高度和宽度

                       强烈推荐:weight_filter:指定参数的初始化方案,默认为常数0

                                可选项:1.bais_term:指定是否给卷积输出添加偏置项,默认是

                                    2.pad:指定在输入图像周围补0的像素个数

                                    3.stride:指定卷集合在输入图像上的滑动步长

                                    4.group;指定分组卷积操作的组数,默认为1不分组,如果g大于1,可以将卷积核的连接限制为输入数据的一个子集

layer{

name=”conv1”

type=”Convolution”

bottom=”data”

top=”conv1”

param{lr_mult:1decay_mult:1}

param{lr_mult:2decay_mult:0}

convolution_param{

num_output:96

kernel_size:11

stride:4

weight_filter{

type:”gaussian”

std:0.01

}

bias_filter{

type:”constant”

value:0

}

}

}



2.Pooling :必填项:1.kernel_size:指定卷积核的高度和宽度

                       可选项:1.pool:池化方法默认MAX有三种选择最大值,均值和随机池化

                             2.pad:指定在输入图像周围补0的像素个数

         3.stride:指定卷集合在输入图像上的滑动步长

layer{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值