Resnet 20 train_val.prototxt为deploy.prototxt

train_val.prototxt为deploy.prototxt文件

 

一.内容简介 
在caffe框架下的深度神经网络一般都会将train和val写在同一个prototxt文件中,然后执行solver文件进行调用执行,并得到最终的accuracy。val是验证的意思,在机器学习里,验证集是训练集的子集,但是我们在做测试的时候,测试集不能和训练集有交集。所有我们需要将train_val.prototxt文件修改成可以做测试的deploy.prototxt文件。在用caffe提取深度特征的时候也会用到deploy文件,这个在下一篇帖子里在接着讨论。

train_val.prototxt文件:训练与测试网络配置文件

deploy.prototxt文件:模型构造文件

这里用resnet-20网络进行演示 
首先我们先画出resnet-20的train_val.prototxt网络和其deploy.protoxtx的模型构造。

在线可视化Caffe结构里prototxt格式的网络结构 :http://ethereon.github.io/netscope/#/editor 
将描述神经网络结构的prototxt文件复制到左侧的编辑框里,按shift-enter,就可以直接以图形方式显示网络的结构 
或者参考本人之前的一篇帖子,可以手动显示网络结构:https://blog.csdn.net/swiftfake/article/details/79698959 
效果展示: 
resnet-20 
这里写图片描述

resnet-20-deploy 
这里写图片描述
二.手动修改 
用代码生成deploy文件比较麻烦。我们在构建深度学习网络时,肯定会先定义好训练与测试网络的配置文件——train_val.prototxt文件,我们可以通过修改train_val.prototxt文件 来生成 deploy 文件。 
(1)deploy 文件中的数据层更为简单,即将*_train_test.prototxt文件中的输入训练数据lmdb与输入测试数据lmdb这两层删除,然后添加一个数据维度描述。内容如下:

input: "data"
input_dim: 1  
input_dim: 3     #通道数,表示RGB三个通道
input_dim: 32    #图像的长和宽,通过 *_train_val.prototxt文件中数据输入层的crop_size获取
input_dim: 32    #图像的长和宽,通过 *_train_val.prototxt文件中数据输入层的crop_size获取
  • 1
  • 2
  • 3
  • 4
  • 5

(2)删除网络中的data层 
(3)卷积层和全连接层中weight_filler{}与bias_filler{}两个参数不用再填写,因为这两个参数的值,由已经训练好的模型*.caffemodel文件提供。将train_val.prototxt文件中的weight_filler、bias_filler全部删除。

(4)deploy.prototxt文件的构造和train_val.prototxt文件的构造最为明显的不同点是,deploy文件没有test网络中的test模块,只有训练模块,将accuracy层整个删除即可

(5)将损失层的“name”改为 prob ,“type”改为 softmax,并删除标签

layer {
  name: "prob"
  type: "Softmax"
  bottom: "fc"
  top: "softmax"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参考:https://blog.csdn.net/lg1259156776/article/details/52550865

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值