剖析Caffe源码之InputLayer
ImageDataLayer可以完成caffe自动读取图片进行模型训练和推断,但是在实际的应用中一般图像都是通过sensor采集而来,将采集得到的图片送到训练好的模型中进行识别、推断,此时就需要用到InputLayer,可以是用户完成传送到网络中,是一个标准的输入层。
InputLayer para
按照老规矩,学习caffe的一个层首先需要了解其入参 ,查看caffe.prot0文件:
在LayerParameter中InputLayer的入参结构为InputParameter,其id为143,其入参结构为:
message InputParameter {// This layer produces N >= 1 top blob(s) to be assigned manually.// Define N shapes to set a shape for each top.// Define 1 shape to set the same shape for every top.// Define no shape to defer to reshaping manually.repeated BlobShape shape = 1;
}
入参相对比较简单,只有一个BlobShape,就是定义图片的shape,为N维空间。
// Specifies the shape (dimensions) of a Blob.
message BlobShape {repeated int64 dim = 1 [packed = true];
}
InputLayer src
InputLayer的源码相对比较简单,只实现了LayerSetUp函数:
namespace caffe {template <typename Dtype>
void InputLayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom,const vector<Blob<Dtype>*>& top) {const int num_top = top.size();const InputParameter& param = this->layer_param_.input_param();const int num_shape = param.shape_size();CHECK(num_shape == 0 || num_shape == 1 || num_shape == num_top)<< "Must specify 'shape' once, once per top blob, or not at all: "<< num_top << " tops vs. " << num_shape << " shapes.";if (num_shape > 0) {for (int i = 0; i < num_top; ++i) {const int shape_index = (param.shape_size() == 1) ? 0 : i;top[i]->Reshape(param.shape(shape_index));}}
}INSTANTIATE_CLASS(InputLayer);
REGISTER_LAYER_CLASS(Input);} // namespace caffe
一般Input只有输出,没有输入,其主要功能就是将所有输出的shape进行shape进行定义。
整体Input layer相对比较简单。
剖析Caffe源码之InputLayer相关推荐
- 剖析Caffe源码之Net---Net构造函数
目录 Net构造函数 读取Prototxt ReadProtoFromTextFile UpgradeNetAsNeeded 设置网络状态 Init函数 FilterNet InsertSplits ...
- 剖析Caffe源码之Layer_factory
在<剖析Caffe源码之Layer>,对Layer代码进行了基本分析,可以知道Layer是所有的其他Layer的基本类,由此来扩展出各个神经网络中所需要的Layer,体现了caffe的可扩 ...
- 剖析Caffe源码之Net类变量
在<解析Net的构造函数源码>过程中,可以看到Net类有很多变量,用于存储网络中的各种信息,caffe中类的变量命名规则统一在变量名中加上'_',查看net.hpp代码可以看到使用了很多变 ...
- 剖析Caffe源码之Layer
目录 Layer介绍 Layer分析 LayerParameter Class Layer Layer派生类 Layer源码 Layer构造函数 SetUp函数 Forward函数 Backward函 ...
- 剖析Caffe源码之Net(上)---NetParameter参数
前面几篇文章主要分析了Caffe中的Blob和Layer源码,了解到了Caffe中的参数数据结构文件caffe.proto,掌握了各个Layer是如何注册到Caffe中,下面将分析Net层. 在分析N ...
- 剖析Caffe源码之ImageDataLayer
目录 ImageDataLayer参数 Source root_folder new_height.new_width is_color crop_size Prototxt配置 Class Imag ...
- 剖析Caffe源码之Net---NetParameter参数
前面几篇文章主要分析了Caffe中的Blob和Layer源码,了解到了Caffe中的参数数据结构文件caffe.proto,掌握了各个Layer是如何注册到Caffe中,下面将分析Net层. 在分析N ...
- 剖析Caffe源码之Blob
目录 介绍 用例 Class Blob Blob主要源码分析 Blob构造函数 Blob各个维度大小设置 Blob维度信息获取 Blob计算偏移量 Blob数据存储与读取相关操作 Blob数据操作 B ...
- 深度学习框架Caffe源码解析
作者:薛云峰(https://github.com/HolidayXue),主要从事视频图像算法的研究, 本文来源微信公众号:深度学习大讲堂. 原文:深度学习框架Caffe源码解析 欢迎技术投稿. ...
最新文章
- 使用 Pandas、Jinja 和 WeasyPrint,轻松创建一个 PDF 报表
- Http压测工具wrk使用指南【转】
- sketch 将动图转换为json_开源 | Picasso:sketch设计稿智能解析工具
- 一个人的成功取决于晚上的8点至10点--经典语录必读
- Kubernetes使用Jenkins服务器存储所有的kube.config文件
- qpsk调制matlab实现,QPSK调制解调Matlab实现(ing待补充说明)
- python + opencv: kalman 跟踪
- 文本编辑器——VI/VIM
- php版wap浏览器,PHP 检测手机浏览器的代码
- shell 搜索文件夹下所有文件
- 应用宝apk_应用商店抽成五五开,热门新游戏揭竿而起
- 我国正式实施不安全食品召回制度(转)
- 硬件设计基础——电阻、电容、电感、磁珠
- 自己动手实现RAFT算法
- SOLIDWORKS直播课:解锁3DE协同设计平台的“云端结构设计角色”
- Oracle索引比表大
- GRUB4DOS(十二)适用于FAT32的分区引导扇区启动代码
- apt-get install E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing
- 巴基斯坦圣诞节期间“毒酒”致42人死亡
- 《Python编程 从入门到实践》第八章 ——函数习题