gpt4 book ai didi

python - 如何用max代替tensorflow softmax来在神经网络的输出层生成一个热向量?

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:33 25 4
gpt4 key购买 nike

对于分类问题,softmax 函数用于神经网络的最后一层。
我想用 max 层替换 softmax 层,该层生成一个热向量,其中一个设置为出现最大值的索引,并将所有其他条目设置为零。

我可以按照 TensorFlow - dense vector to one-hot 中的建议使用 tf.argmax 来完成此操作和 Tensorflow: Convert output tensor to one-hot ,但这些不是可微分的方法,并且无法计算梯度。

如果无法获得精确的 0 和 1,则值应该足够接近。

我曾考虑多次应用softmax,但不建议这样做,而且我不明白其背后的原因。

请提出一个可微分的解决方案。

最佳答案

如果我理解正确的话,我认为你所描述的情况是不可能的。为了使操作可微,我们需要能够找到梯度。

直观上来说,如果您只是将所有值裁剪为 0 或 1,那么这是没有意义的

针对评论的更新:

可以始终在指标计算中使用此类操作。这将为您提供训练期间表现的“更准确的 View ”(但不会用于训练 - 只是向您报告结果)。

不可能将其用于损失/目标函数,因为这不是神经网络学习的工作原理。我会尝试解释一下。

有适当的数学理由和定义可以解释为什么损失函数需要可微,但直观上,我们可以想象我们的优化器需要一个“平滑”、“连续”的表面来工作。

想象一下,蒙住眼睛在光滑、连续的平面上行走,并负责找到最低点。一种策略是用脚在你周围打圈,直到找到可以让你走得最远的一步。现在采取这一步并重复一遍。继续重复,直到到达底部,不再有向下的台阶。人们可以用这种方式来思考梯度下降优化。每次我们越来越接近底部时,我们都会朝着使我们处于最低点的方向迈出一小步。

现在,想象一个除了一个悬崖边缘之外完全平坦的表面,而不是一个光滑的平面。无论你站在平面上的哪个位置,你都不可能知道该朝哪个方向迈进。如果你远离悬崖边缘,一切都是平坦的。即使您处于悬崖边缘,您仍然不知道确切的方向(您可能有 180 度可供选择)到达最低点。

这有道理吗?如果没有光滑连续的表面,我们就不能采用小步向下的策略吗?

关于python - 如何用max代替tensorflow softmax来在神经网络的输出层生成一个热向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56834934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com