为什么要使用预训练模型

当然是因为自己从头训练(所有权重随机初始化)太费时费力了

当我们用卷积神经网络训练自己的数据得到图片分类器时,会发现网络大多数结构包括convolution layers, pooling layers等是用来提取图片特征的,在这些layers的开始部分,提取的特征是相当泛化的,比如说边缘特征、色块特征。越到后面的layers,提取的特征越具有特殊性,例如ImageNet 数据集包含了许多不同品种的狗,到后面的layers便具备了狗的一些共有特征。

因此我们通常会将别人训练过的模型拿来用(用这些模型的权重来初始化),通常有两种用法。第一,前面的layers全部保留,只训练最后的分类器(SVM,Softmax等),以使用caffe为例,具体做法就是修改train的prototxt文件里面最后一个fc层的名字和输出数。第二,保留一部分layers(当然也可以不保留),然后重新训练(此时有back propagation的过程而第一没有)。

如果你觉得别人的模型不可靠,毕竟这些数据集的类多为生活中自然中的物体,与我们具体要做的分类的物体可能存在较大的差异,那便自己从头训练一下(条件:足够多的数据、性能较好的GPU、充足的时间),网络模型依然可以使用别人的,毕竟是验证过提取特征效果很好的模型。

最后放上caffe的model zoo:https://github.com/BVLC/caffe/wiki/Model-Zoo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值