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相关推荐

  1. 剖析Caffe源码之Net---Net构造函数

    目录 Net构造函数 读取Prototxt ReadProtoFromTextFile UpgradeNetAsNeeded 设置网络状态 Init函数 FilterNet InsertSplits ...

  2. 剖析Caffe源码之Layer_factory

    在<剖析Caffe源码之Layer>,对Layer代码进行了基本分析,可以知道Layer是所有的其他Layer的基本类,由此来扩展出各个神经网络中所需要的Layer,体现了caffe的可扩 ...

  3. 剖析Caffe源码之Net类变量

    在<解析Net的构造函数源码>过程中,可以看到Net类有很多变量,用于存储网络中的各种信息,caffe中类的变量命名规则统一在变量名中加上'_',查看net.hpp代码可以看到使用了很多变 ...

  4. 剖析Caffe源码之Layer

    目录 Layer介绍 Layer分析 LayerParameter Class Layer Layer派生类 Layer源码 Layer构造函数 SetUp函数 Forward函数 Backward函 ...

  5. 剖析Caffe源码之Net(上)---NetParameter参数

    前面几篇文章主要分析了Caffe中的Blob和Layer源码,了解到了Caffe中的参数数据结构文件caffe.proto,掌握了各个Layer是如何注册到Caffe中,下面将分析Net层. 在分析N ...

  6. 剖析Caffe源码之ImageDataLayer

    目录 ImageDataLayer参数 Source root_folder new_height.new_width is_color crop_size Prototxt配置 Class Imag ...

  7. 剖析Caffe源码之Net---NetParameter参数

    前面几篇文章主要分析了Caffe中的Blob和Layer源码,了解到了Caffe中的参数数据结构文件caffe.proto,掌握了各个Layer是如何注册到Caffe中,下面将分析Net层. 在分析N ...

  8. 剖析Caffe源码之Blob

    目录 介绍 用例 Class Blob Blob主要源码分析 Blob构造函数 Blob各个维度大小设置 Blob维度信息获取 Blob计算偏移量 Blob数据存储与读取相关操作 Blob数据操作 B ...

  9. 深度学习框架Caffe源码解析

    作者:薛云峰(https://github.com/HolidayXue),主要从事视频图像算法的研究, 本文来源微信公众号:深度学习大讲堂.  原文:深度学习框架Caffe源码解析  欢迎技术投稿. ...

最新文章

  1. 使用 Pandas、Jinja 和 WeasyPrint,轻松创建一个 PDF 报表
  2. Http压测工具wrk使用指南【转】
  3. sketch 将动图转换为json_开源 | Picasso:sketch设计稿智能解析工具
  4. 一个人的成功取决于晚上的8点至10点--经典语录必读
  5. Kubernetes使用Jenkins服务器存储所有的kube.config文件
  6. qpsk调制matlab实现,QPSK调制解调Matlab实现(ing待补充说明)
  7. python + opencv: kalman 跟踪
  8. 文本编辑器——VI/VIM
  9. php版wap浏览器,PHP 检测手机浏览器的代码
  10. shell 搜索文件夹下所有文件
  11. 应用宝apk_应用商店抽成五五开,热门新游戏揭竿而起
  12. 我国正式实施不安全食品召回制度(转)
  13. 硬件设计基础——电阻、电容、电感、磁珠
  14. 自己动手实现RAFT算法
  15. SOLIDWORKS直播课:解锁3DE协同设计平台的“云端结构设计角色”
  16. Oracle索引比表大
  17. GRUB4DOS(十二)适用于FAT32的分区引导扇区启动代码
  18. apt-get install E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing
  19. 巴基斯坦圣诞节期间“毒酒”致42人死亡
  20. 《Python编程 从入门到实践》第八章 ——函数习题

热门文章

  1. java批量执行多条Sql语句
  2. Linux系统:centos7下安装Jdk8、Tomcat8、MySQL5.7环境
  3. 线性表的Java实现--链式存储(双向链表)
  4. SparkMLlib回归算法之决策树
  5. 如何用SQL语句查询Excel数据
  6. c语言 main函数
  7. iptables控制较复杂案例
  8. Java千百问_03基本语法(002)_java都有哪些关键字
  9. Linux下监控网卡流量的软件iftop
  10. ADO.NET的最佳实践技巧