首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MatConvNet进行二进制分类的神经网络

用MatConvNet进行二进制分类的神经网络
EN

Stack Overflow用户
提问于 2017-01-18 07:13:23
回答 1查看 752关注 0票数 0

我已经开始在MatConvNet中使用基本的二进制分类。我有90张图片,总共有750架飞机和地面真相盒。使用地面盒,我提取了所有的飞机图像块作为阳性样本,并为输入的变量。下面是MATLAB代码:

代码语言:javascript
复制
Npos =  numel(p_regions);
Npos_train = floor(0.25*Npos); 
Npos_val = floor(0.25*Npos);
Npos_test = floor(0.50*Npos);

imdb.images.set =[ ones( 1, Npos_train ) 2*ones( 1, Npos_val) 3*ones( 1, Npos_test)];
for i=1:Npos
        im= imresize (double(p_regions{i,:}),[50,50]);
    imdb.images.data(:,:,:, i) = im;
    imdb.images.labels(i) = 1;
end
imdb.meta.sets = {'train', 'val', 'test'} ;

如果我组合了飞机(正)和非飞机(负)图像补丁,那么代码会是这样吗?

代码语言:javascript
复制
Npos_train = floor(0.25* (Npos+Nneg)); 
Npos_val = floor(0.25*(Npos+Nneg));
Npos_test = floor(0.50*(Npos+Nneg));
for i=1:Npos
            im= imresize (double(p_regions{i,:}),[50,50]);
        imdb.images.data(:,:,:, i) = im;
        imdb.images.labels(i) = 1;
    end
for i=1:Nneg
            im= imresize (double(n_regions{i,:}),[50,50]);
        imdb.images.data(:,:,:, I+Npos) = im;
        imdb.images.labels(I+Npos) = 0;
    end
imdb.images.set =[ ones( 1, Npos_train ) 2*ones( 1, Npos_val) 3*ones( 1, Npos_test)];

images.data将像所有积极的事物一样--所有的负面因素

images.labels将组织所有1的所有0的数据。

images.set为images.set =1( 1,Npos_train )2*1( 1,Npos_val) 3*1( 1,Npos_test);

问:让我感到困惑的是:如果我们想要200个样本进行培训。那么,如果数据存储在images.dataimages.labels中,CNN将如何自动提取阳性和阴性样本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-18 08:34:03

你应该亲自验证这一点。在打印相应的标签时,采集数据样本并绘制图像。

即使我现在告诉您此代码是否正确,这也是因为我没有访问数据集的权限,也无法尝试您的代码。但是,无论如何,您都必须能够验证您的数据,以验证您正在学习正确的东西。因此,我建议你自己验证一下。它将帮助你提高你的深度学习技能。

编辑:

数据数组的相同索引对应于标签数组中的相同索引。因此,如果标签对一架飞机是0,它知道它是假的,如果不是,它知道它是真实的。

网络实际上不知道哪个标签对应于哪个动作,它只是学会了区分这两个类。我建议通过math卷积one教程(比如这个:http://www.robots.ox.ac.uk/~vgg/practicals/cnn/index.html)来理解这些概念。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41713357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档