首页 > 代码库 > 神经网络caffe框架源码解析--data_layer.cpp类代码研究
神经网络caffe框架源码解析--data_layer.cpp类代码研究
dataLayer作为整个网络的输入层,
数据从leveldb中取。leveldb的数据是通过图片转换过来的。
网络建立的时候,
datalayer主要是负责设置一些参数,比如batchsize,channels,height,width等。
这次会通过读leveldb一个数据块来获取这些信息。
然后启动一个线程来预先从leveldb拉取一批数据,这些数据是图像数据和图像标签。
正向传播的时候,
datalayer就把预先拉取好数据拷贝到指定的cpu或者gpu的内存。
然后启动新线程再预先拉取数据,这些数据留到下一次正向传播使用。
// Copyright 2013 Yangqing Jia #include <stdint.h> #include <leveldb/db.h> #include <pthread.h> #include <string> #include <vector> #include "caffe/layer.hpp" #include "caffe/util/io.hpp" #include "caffe/vision_layers.hpp" using std::string; namespace caffe { template <typename Dtype> void* DataLayerPrefetch(void* layer_pointer) { CHECK(layer_pointer); DataLayer<Dtype>* layer = reinterpret_cast<DataLayer<Dtype>*>(layer_pointer); CHECK(layer); Datum datum; CHECK(layer->prefetch_data_); Dtype* top_data = http://www.mamicode.com/layer->prefetch_data_->mutable_cpu_data();//数据>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。