Caffe 网络参数 网络模型

caffe网络参数文件格式为prototxt,一般有train_val.prototxt,deploy.protxt,solver.protxt。通过这些文件进行训练得到网络模型,比如文件交models中的bvlc_alexnet.caffemodel,bvlc_googlenet.caffemodel;

网络模型是由多个层组成的,一般由data、conv、pooling、full-connection层组成,有些网络虽然比较深,但是基本也是多个卷积、多个全连接。
在caffe源码中,先初始化一个网络net_,参数文件也是包括了prototxt参数文件,然后也可以直接加上已经训练好的网络模型和计算好的mean文件,然后就可以进行测试了(特征提取、分类等)

层与层之间的数据流是以Blobs进行了。

Blob<float>* input_layer = net_->input_blobs()[0];//输入层
Blob<float>* output_layer = net_->output_blobs()[0];//输出层
Blob<float>* feature_blob = net_->blob_by_name(blob_names[i]);//直接根据层名来提取数据

注意数据可以从Blobs与其他数据格式进行转化,比如高效的lmdb、levelDB数据库格式
与数据库的转化:

 Datum datum;
 datum.set_height(feature_blob->height());
 datum.set_width(feature_blob->width());
 datum.set_channels(feature_blob->channels());
 datum.clear_data();
 datum.clear_float_data();

也可以直接与内置数据类型进行转化,比如:
const float*data=feature_blob->cpu_data();

prototxt文件中
include: 一般训练的时候和测试的时候,模型的层是不一样的。该层(layer)是属于训练阶段的层,还是属于测试阶段的层,需要用include来指定。如果没有include参数,则表示该层既在训练模型中,又在测试模型中。
transform_param部分主要是数据的预处理,可以将数据变换到定义的范围内。如设置scale为0.00390625,实际上就是1/255, 即将输入数据由0-255归一化到0-1之间

transform_param {
    scale: 0.00390625
    mean_file_size: "examples/cifar10/mean.binaryproto"
    # 用一个配置文件来进行均值操作
    mirror: 1  # 1表示开启镜像,0表示关闭,也可用ture和false来表示
    # 剪裁一个 227*227的图块,在训练阶段随机剪裁,在测试阶段从中间裁剪
    crop_size: 227
  }

data_param部分要根据数据来源的不同进行设置,层类型type:Data,backend默认是levelDB;MemoryData;HDF5Data;ImageData;windowData;要根据不同的类型进行参数设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值