卷积神经网络总是输出一个类

时间:2016-05-27 12:31:21

标签: matlab deep-learning backpropagation vision

我正在尝试使用matconvnet软件包在matlab中微调 imagenet-vgg-f 网络。而不是1000个类,它只能分类两个。

如果我只将最后一层从1000更改为2个输出神经元,那么一切工作都很顺利。但是,如果我在最后一层之前添加一个(或多个)附加(完全连接)层,则网络不会收敛。它以0.369的评估误差开始,并在所有训练时期保持不变。事实证明,0.369是我在数据集中的 class 2 图像的一部分。所以网络总是说 class 1

net= load('imagenet-vgg-f.mat') ;
f=1/100; 

net.layers{end-1} = struct('type', 'conv', ....
                       'weights', {{f*randn(1,1,4096,24, 'single'), zeros(1, 24, 'single')}}, ...
                       'stride', 1, ...
                       'pad', 0, ...
                       'name', 'fc8') ;
net.layers{end}=struct('type', 'relu') ;

net.layers{end+1}=struct('type', 'conv', ... 
                       'weights', {{f*randn(1,1,24,2, 'single'), zeros(1, 2,'single')}}, ...
                       'stride', 1, ...
                       'pad', 0, ...
                       'name', 'fc8') ;

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

我正在使用0.9的动量和0.001的学习率训练部署的cnn_train.m。改变这些参数并没有帮助学习过程。我也尝试了sigmoid激活fcts而不是relu,但这也没有帮助。

知道我做错了什么吗?特别考虑到当我不从4096到24到2但直接从4096到2个神经元时,一切都完美无缺。

提前致谢

纳斯

0 个答案:

没有答案