使用matconvnet进行迁移学习(fine-tuning)的简单思路

使用matconvnet进行迁移学习(fine-tuning)的简单思路

matconvnet中用一般用init函数来生成一个struct结构体来定义网络
参考作者给的轮子cnn_cifar_init.m中最后两层

% Block 5
net.layers{end+1} = struct('type', 'conv', 'weights', {{0.05*randn(1,1,64,10, 'single'), zeros(1,10,'single')}},'learningRate', .1*lr, 'stride', 1, 'pad', 0) ;

% Loss layer
net.layers{end+1} = struct('type', 'softmaxloss') ;

可以看出是一个输入64,卷积核1*1(保持不变),输出10(代表10类)的全连接层,再接一个softmax
那么想匹配自己的数据的话,只需改动倒数第二层的输出就行了

即读取pre-train的网络后,手动删除结构体的最后两层,再加上自己修改的全连接层,和softmax便可

net.layers = net.layers(1:end-2);

net.layers{end+1} = struct('type', 'conv', 'weights',{{0.005*randn(1,1,64,5, 'single'), zeros(1,5,'single')}}, 'learningRate',.1*lr ,'stride', 1, 'pad', 0) ;

net.layers{end+1} = struct('type', 'softmaxloss') ;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值