Machine learning 基于CNN的二值分类输出

Machine learning 基于CNN的二值分类输出,machine-learning,computer-vision,deep-learning,conv-neural-network,matconvnet,Machine Learning,Computer Vision,Deep Learning,Conv Neural Network,Matconvnet,你好,我最近开始为CNN的二进制分类工作 这是我的网络: net.meta.inputSize = [28 28 3] ; net.meta.trainOpts.learningRate = 1e-02 ; net.meta.trainOpts.numEpochs = 50 ; net.meta.trainOpts.batchSize = 280 ; opts.train.gpus = []; f=1/100 ; net.layers = {} ; net.layers{end+1} = str

你好,我最近开始为CNN的二进制分类工作

这是我的网络:

net.meta.inputSize = [28 28 3] ;
net.meta.trainOpts.learningRate = 1e-02 ;
net.meta.trainOpts.numEpochs = 50 ;
net.meta.trainOpts.batchSize = 280 ;
opts.train.gpus = [];
f=1/100 ;
net.layers = {} ;
net.layers{end+1} = struct('type', 'conv','weights', {{f*randn(5,5,3,50, 'single'), zeros(1, 50, 'single')}},'stride', 1,'pad', 0);
net.layers{end+1} = struct('type', 'pool','method', 'max', 'pool', [2 2], 'stride', 2, 'pad', 0) ;
net.layers{end+1} = struct('type', 'conv', 'weights', {{f*randn(5,5,50,30, 'single'),zeros(1,30,'single')}}, 'stride', 1, 'pad', 0) ;
net.layers{end+1} = struct('type', 'pool', 'method', 'max', 'pool', [2 2], 'stride', 2, 'pad', 0) ;
net.layers{end+1} = struct('type', 'conv', 'weights', {{f*randn(4,4,30,50, 'single'),  zeros(1,50,'single')}}, 'stride', 1, 'pad', 0) ;
net.layers{end+1} = struct('type', 'relu') ;
net.layers{end+1} = struct('type', 'conv', 'weights', {{f*randn(1,1,50,2, 'single'), zeros(1,2,'single')}}, 'stride', 1, 'pad', 0) ;
net.layers{end+1}= struct('type', 'dropout', 'rate', 0.9);
net.layers{end+1} = struct('type', 'softmaxloss') ;
 net.meta.classes.name =arrayfun(@(x)sprintf('%d',x),0:1,'UniformOutput',false);
disp( 'Net is Ok.' );

[net, info] = cnn_train( net, imdb, @getBatch, net.meta.trainOpts, opts.train, 'val', find( imdb.images.set == 2 ) ) ;
如果学习率为
1e-2

如果显著减少学习,我将获得此输出

有人请帮我告诉我哪些学习是好的,这些图表显示了什么

更新: 我做错了一点。由于MatConvNet中的cnn训练函数默认为“多类”,因此我将其更改为“二进制”,现在我通过不同学习率的组合得到这个结果
[0.00005*一(1,10)0.000005*一(1,20)0.0000005*一(1,20)]

看到您的结果很有趣。我想很明显,根据这些数据,你的学习率应该很低,所以只需在1e-2到1e-8之间的不同学习率范围内进行测试,看看哪一个在第一次迭代中损失最大,然后在选择的学习率下,你可以在几次迭代后应用下降学习或再次运行测试随机的search@Feras我已经更新了问题。我想知道,在最后一个图中,“brrerr”应该是这样的?什么是“brrerr”你是说“binerr”这个图表明你的模型过度拟合了你的训练数据,没有泛化。你能告诉我“binerr”和“objective”这两种型号的区别吗对不起,是“binerr”,我怎样才能避免这种过度拟合呢?减少培训样本,因为目前我使用11816的75%进行培训?我仍在试图找出Binerr和Objective模型之间的区别这两个Binerr和Objective是什么?看到你们的结果很有趣。我想很明显,根据这些数据,你的学习率应该很低,所以只需在1e-2到1e-8之间的不同学习率范围内进行测试,看看哪一个在第一次迭代中损失最大,然后在选择的学习率下,你可以在几次迭代后应用下降学习或再次运行测试随机的search@Feras我已经更新了问题。我想知道,在最后一个图中,“brrerr”应该是这样的?什么是“brrerr”你是说“binerr”这个图表明你的模型过度拟合了你的训练数据,没有泛化。你能告诉我“binerr”和“objective”这两种型号的区别吗对不起,是“binerr”,我怎样才能避免这种过度拟合呢?减少培训样本,因为目前我使用11816的75%进行培训?我仍在试图找出Binerr和Objective模型之间的区别这两个Binerr和Objective是什么?