首页 Paddle框架 帖子详情
对于图像分类全连接层的输出标签顺序是怎么确定的?
收藏
快速回复
Paddle框架 问答深度学习 9263 67
对于图像分类全连接层的输出标签顺序是怎么确定的?
收藏
快速回复
Paddle框架 问答深度学习 9263 67

标题可能没讲清楚,举个例子吧。

在MNIST数据集中,使用CNN提取图像特征后送入FC层输出(batch_size, 10)大小的矩阵,第二个维度10代表着10个类别。可是这10个类别分别代表什么类别呢?如果说这个矩阵从左到右代表着0—9还好理解,那又是什么保证了这10个种类一定是0—9的顺序呢?但如果是一些其他数据要怎么判断它的类别顺序呢?

0
收藏
回复
全部评论(67)
时间顺序
thinc
#2 回复于2020-10

好像大家没有太理解这个意思,再举一个例子吧

CIFAR100是一个图像分类的数据集,假设batch_size为1,我们经过卷积和全连接后得到一个(1,100)大小的矩阵,这100个数分别对应着每一个类的概率(或置信度),那这100个类分别是哪些类呢?

0
回复
3
337954205
#3 回复于2020-10

首先 把一百类图像用1-100个数代表(标签化),例如:狗-1,猫-2

这样训练时输入的数据是(batch_size为2),数据[狗,猫],标签[1,0 ;0, 1]

最后的全连接层的输出会接一个softmax,这样会将输出值变为概率化的值,即每个分量都>=0,分量和为1.

如果是100类,那么会是一个有100个分量的向量,每次输出的最大的分量的位置(注意是位置),就是预测到的类

1
回复
thinc
#4 回复于2020-10
首先 把一百类图像用1-100个数代表(标签化),例如:狗-1,猫-2 这样训练时输入的数据是(batch_size为2),数据[狗,猫],标签[1,0 ;0, 1] 最后的全连接层的输出会接一个softmax,这样会将输出值变为概率化的值,即每个分量都>=0,分量和为1. 如果是100类,那么会是一个有100个分量的向量,每次输出的最大的分量的位置(注意是位置),就是预测到的类
展开

感谢回复,其实我就是好奇你一开始说的  狗-1,猫-2  是如何定义的?

如果我定义成 猫-1  狗-2  是不是也可以呢?如果可以的话应该怎么去定义这么个东西

0
回复
AIStudio810258
#5 回复于2020-10

我理解训练集里标注怎么对应,预测就怎么对应。

0
回复
AIStudio810258
#6 回复于2020-10
thinc #2
好像大家没有太理解这个意思,再举一个例子吧 CIFAR100是一个图像分类的数据集,假设batch_size为1,我们经过卷积和全连接后得到一个(1,100)大小的矩阵,这100个数分别对应着每一个类的概率(或置信度),那这100个类分别是哪些类呢?
展开

每次更新权重都是让输出的标签值更接近标注的标签值。

0
回复
AIStudio810258
#7 回复于2020-10
thinc #4
感谢回复,其实我就是好奇你一开始说的  狗-1,猫-2  是如何定义的? 如果我定义成 猫-1  狗-2  是不是也可以呢?如果可以的话应该怎么去定义这么个东西

因为训练集的标签就是给狗打的1,给猫打的2。反过来也可以的

0
回复
AIStudio810260
#8 回复于2020-10
首先 把一百类图像用1-100个数代表(标签化),例如:狗-1,猫-2 这样训练时输入的数据是(batch_size为2),数据[狗,猫],标签[1,0 ;0, 1] 最后的全连接层的输出会接一个softmax,这样会将输出值变为概率化的值,即每个分量都>=0,分量和为1. 如果是100类,那么会是一个有100个分量的向量,每次输出的最大的分量的位置(注意是位置),就是预测到的类
展开

点赞~

0
回复
3
337954205
#9 回复于2020-10
thinc #4
感谢回复,其实我就是好奇你一开始说的  狗-1,猫-2  是如何定义的? 如果我定义成 猫-1  狗-2  是不是也可以呢?如果可以的话应该怎么去定义这么个东西

可以的 随便怎么定义都可以 标签顺序是人为的

只不过大家用的通用数据集都是清洗好的数据,标签都已经给标注好了,所以大家都直接按照那个顺序来

如果是自己采集数据集,随意排序无所谓的,猫狗鸡和鸡狗猫没区别

0
回复
UnseenMe
#10 回复于2020-10

其他数据,也要看标注的类别顺序,判断输出的类别顺序。

反过来说,如果把MINST数据集的标注修改一下,所有8的图片都标注成1000000000,

那么训练得到的模型推理结果第一个结点score最高时,就表示预测结果为8,而不是原来的0了。

0
回复
AIStudio810258
#11 回复于2020-10

有监督方法都是用输入固定的。聚类那样的无监督类别就是随机对应了

0
回复
AIStudio810258
#12 回复于2020-10

我开始尝试infogan的时候就纳闷,为什么生成0~9手写数字时离散的latent code与数字的不是对应的~~

而且每次还不一样

0
回复
AIStudio810258
#13 回复于2020-10
我开始尝试infogan的时候就纳闷,为什么生成0~9手写数字时离散的latent code与数字的不是对应的~~ 而且每次还不一样

后来理解,这个是半监督学习,潜空间编码只是对应了10类,具体对应哪一类是随机的

0
回复
thinc
#14 回复于2020-10
我理解训练集里标注怎么对应,预测就怎么对应。

训练集只是标注了每个样本的特征和标签,例如

img1——“5”

img2——“3”

img3——“2”

这些样本与样本之间的值都是离散的,对于样本自己来说,他们确实都有自己的标签,但是在全连接层中对于所有的类别,又是怎么确定的呢?

0
回复
thinc
#15 回复于2020-10
因为训练集的标签就是给狗打的1,给猫打的2。反过来也可以的

明白了!!!!!!!!!

数据集定义的时候其实已经给样本打上固定的标签了。我还卡在这里困惑很久~~

0
回复
thinc
#16 回复于2020-10
UnseenMe #10
其他数据,也要看标注的类别顺序,判断输出的类别顺序。 反过来说,如果把MINST数据集的标注修改一下,所有8的图片都标注成1000000000, 那么训练得到的模型推理结果第一个结点score最高时,就表示预测结果为8,而不是原来的0了。
展开

就是这个意思,懂了~

0
回复
thinc
#17 回复于2020-10

有时候学着学着真的就绕进去了。。跟大家交流一下马上豁然开朗

0
回复
暮光の灵
#18 回复于2020-10
因为训练集的标签就是给狗打的1,给猫打的2。反过来也可以的

顺序应该是随意的吧,在我们人脑里是猫狗,在电脑里只是两组不同数据

0
回复
AIStudio810258
#19 回复于2020-10
thinc #15
明白了!!!!!!!!! 数据集定义的时候其实已经给样本打上固定的标签了。我还卡在这里困惑很久~~[图片]

刚才也有点给我搞蒙了

我还以为另有道理~~

0
回复
AIStudio810258
#20 回复于2020-10
顺序应该是随意的吧,在我们人脑里是猫狗,在电脑里只是两组不同数据

嗯,对softmax来说,训练就是就是不断更新权重,以让模型将输入的像素映射为输出的标签值

0
回复
AIStudio810258
#21 回复于2020-10
顺序应该是随意的吧,在我们人脑里是猫狗,在电脑里只是两组不同数据

我就把模型想象成一把尺,用这把尺去量各种图片,如果量对了,说明尺准,如果量得不对,就看量大了还是量小了(通过梯度判断),然后就把尺的刻度(权重)改大改小。就是这么回事,哈哈

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户