三个数据集与deploy.prototxt

18 篇文章 0 订阅

神经网络中经常会出现三种数据集:训练数据集train set、验证数据集validation set、测试数据集test set。对每个训练数据,计算得到准确性,在网络中后向传播误差,从而调整权重weights。对每一个验证数据,也会计算准确性accurary,当准确性达到阈值,就退出训练,这是为了防止过度拟合overfitting。

70% should be train cases, 10% will be testcases and the rest 20% should be validation cases.

测试集test set,用来测试最终确定的网络的准确性和预测能力。

所以容易混淆的就是训练数据集和验证数据集。训练数据集主要用来构建模型,网络通过对训练数据的学习得到权值。验证数据集是可选的,用来辅助模型的构建,used to tune the parameters [i.e., architecture, not weights] of aclassifier, for example to choose the number of hidden units in a neuralnetwork.。叫辅助是因为验证数据集不能直接参与权重的调整,不参与训练,验证集对网络是全新的。叫验证集是因为我们要验证在训练数据中准确性的提升是否可以使模型在验证集中也得到提升。验证集对应交叉验证cross validation阶段。叫交叉是因为我们可能同时有多个模型同时调整参数,要对已经训练好的模型取误差最小的。

https://stackoverflow.com/questions/2976452/whats-is-the-difference-between-train-validation-and-test-set-in-neural-netwo

又看到一个形象化的比方:训练集是习题大全,网络通过刷题来学习。但是我们不想得到一个过拟合的学生,不希望它只是简单地把习题对应的答案记住。所以我们要举行模拟考试,即验证集。而测试集就好比是高考,来评估网络性能的好坏。高考一年只有一次,是要出成绩的时候,而模拟考试可以让我们多次查漏补缺,这就是验证集的意义。有时,把测试数据分成两部分,一部分作为测试数据,一部分作为验证数据,所以验证数据集可以看作是训练数据向测试数据的过渡。

https://blog.csdn.net/chenhaifeng2016/article/details/73681910

在mnist文件夹,除了lenet_train_test.prototxt,还有lenet.prototxt.两者类似。只是首尾有差别。查了一下资料,这里的lenet.prototxt应该就是用deploy.py生成的deploy.prototxt. lenet_train_test.prototxt是其他地方所指的train_val.prototxthttps://blog.csdn.net/fx409494616/article/details/53008971我安装的是windows 下c++的caffe,在pycaffe文件夹下也没有deploy.py文件。应该是压缩包里有已经提供了现成的,即lenet.prototxt.有博客讲解了如何利用deploy.py生成部署文件,但也有博客说这样有点复杂,既然部署文件和训练文件差别很小,可以直接在它的基础上改动。

那么到底为什么相似,又为什么不同?简单来说,lenet_train_test.prototxt写作train_val.prototxt更恰当,因为联系之前提到的验证数据集的作用,这个文件是用来构建网络模型的,叫做lenet_train_test.prototxt也可以理解,因为delpoy得到的letnet.prototxt是最终用来实际使用的,即把测试即使是高考,但也只是一种考试,最终还是要步入社会进行实践。

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

神经网络中,我们通过最小化神经网络来训练网络,所以在训练时最后一层是损失函数层(LOSS),在测试时我们通过准确率来评价该网络的优劣,因此最后一层是准确率层(ACCURACY)。但是当我们真正要使用训练好的数据时,我们需要的是网络给我们输入结果,对于分类问题,我们需要获得分类结果,最后一层我们得到的是概率,我们不需要训练及测试阶段的LOSS,ACCURACY层了。train_val.prototxt文件里面训练的部分都会在deploy.prototxt文件中删除。

deploy.prototxt就是在lenet_train_test.prototxt的基础上稍作改动:

第一层:

input_param { shape: { dim: 1 dim: 1 dim:28 dim: 28 } } 这四个dim参数分别是

第一个:对待识别样本图片进行数据增广的数量,一个图片会变成10个,之后输入到网络进行识别。如果不进行数据增广,可以设置成1。

第二个:图片的通道数,一般灰度图片为单通道,则值为1,如果为非灰度图3通道图片则为3。

第三个:图片的高度,单位像素。

第四个:图片的宽度,单位像素。

https://blog.csdn.net/lanxuecc/article/details/52474476

最后一层:

将accuracy层(type:Accuracy)和loss层(type:SoftmaxWithLoss)替换成name: "prob" type: "Softmax"。因为要运用于实际分类中,我们不知道输入图像的标签,所以只能得到它属于各类的概率。

此外,weight_filler、bias_filler也是可以删除的。因为这两个参数的值,由已经训练好的模型*.caffemodel文件提供。https://blog.csdn.net/u010417185/article/details/52137825

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值