softmax 回归的从零开始实现 讨论区


#128

应该是的


#129

涉及到图像知识吧,1表示通道


#130

微信群不在邀请人了吗?? 有谁在群里的同志,能否拉一下啊,我微信号sanlingdd


#131

希望有个非常耐心的大神能帮我解读下accuracy部分的代码 也就是每一行它会出来几乘几的矩阵,意义是什么~
万分感谢!


#133

accuracy就是求模型准确度的,前面有人已经解释过了


#135

错误提示:没有 "gluonbook"模型是怎么回事?


#136

需要从这里下

https://github.com/mli/gluon-tutorials-zh/tree/master/gluonbook


#137

我的理解是一个图片是28*28个像素点,1代表一个图片。所以需要3维矩阵来描述数据集


#139

想问一下这句代码是什么意思呀?
train_l_sum += l.mean().asscalar()
我的理解是它首先把真实标签y所对应的y_hat.log给拎了出来(对应到公式中就是O的值)。然后对拎出来的O进行平均,之后变成标量进行累加?(呜不知道有没有弄错)
为什么这样的操作可以看作是损失呢?:disappointed_relieved:
求助求助,想了好久但是都没什么思路。


#140

还有就是,这样的loss有什么用吗?(我可以理解train acc和test acc,因为他们能够评估到底对了几个,但是这个loss对于改善模型有什么作用吗?(也就是它的意义是什么…(哦头秃


#141

loss在上面已经定义了,就是 def cross_entropy

l.mean().asscalar() 这里就是对loss向量求平均

这个loss使我们在训练模型时需要优化的损失函数:
https://zh.gluon.ai/chapter_supervised-learning/classification.html#交叉熵损失函数


#142

嗯嗯谢谢啦!我知道loss是cross_entropy,但是我疑惑的是在之前的线性回归里损失函数(平方损失)有两个作用:1.比较和正确答案的差距;2.会在优化函数中被使用。
但是loss这里反向传导(l.backward())有什么作用吗?因为我好像没有看到它被使用。
train_l_sum或是train_l为什么能够作为损失函数进行评估和正确值之前的差距?(因为train_l_sum是正确的标签Y所对应的O又求了平均吧?如果说y_hat和y可以作差进行比较我可以理解,但是为什么train_l_sum也可以呢?)


#143

https://zh.gluon.ai/chapter_supervised-learning/classification.html#交叉熵损失函数

先问一个问题哈:这里的交叉熵损失函数的含义写的有没有不清楚的地方?读完会不会能够理解为什么它可以作为损失函数


#144

(疯狂点头)
我觉得不是很清楚,这里交叉熵损失函数数学意义上的公式看得懂,但是我读完不理解。
ℓ(Θ)事实上是把y_hat的log值取正值累加再平均对不对?对应到我们的实际题目里(如果不考虑虚数之类的)就是O的值累加再平均,这样为什么能够作为损失函数?(因为对我来说我更希望知道y_hat和y之间有联系、这样才能够让我get到“哦!这两者的确是有一定的差距”“这个损失函数的确是告诉了我他们之间的距离、误差”),但是事实上这一段文章的描写是没有特别写y,更多地是告诉我“被预测概率越大就越准”,解释y_hat,我就觉得晕fufu(哭TAT可能是因为我数学太差了:sob:


#145

我知道你的concern了,是我没解释清楚。稍等我一下哈,今天改完这段描述再发给你帮忙review一下是否清楚~


#146

刚刚改好,你觉得还有写的不清楚的地方吗?

https://zh.gluon.ai/chapter_supervised-learning/classification.html#交叉熵损失函数


#147

def cross_entropy(y_hat, y):
return -nd.pick(y_hat.log(), y)
请问在定义cross_entropy时,计算的结果是一个数组,数组中的每一个值代表一个样本在该样本所属类别的预测概率吗,如果是的话,请问在哪里做了样本的累和,损失函数不是要计算样本的累和吗1


#148

前面几节描述过,如果l是向量, l.backward()等于l.sum().backward()

对了,你觉得crossentropy那部分介绍写清楚了没有,谢谢


#149

哦哦,还是看到不够仔细,谢谢解答。
crossentropy介绍那部分写到当样本i的标签类别为yj时(1≤j≤m),设q(i)j=1且当k≠j,1≤k≤m时q(i)k=0。个人是这么理解的:当样本i的标签类别为yk时(1≤k≤m),当j=k时,q(i)j=1;当k≠j时q(i)j=0。


#150

训练的精度只能达到0.861 为什么呢? 是数据少还是loss函数的问题呢?