- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在研究 tensorflow 的分类问题,我是机器学习领域的新手,但我没有得到任何东西。
我已成功尝试训练输出 y
张量的模型,如下所示:
y = [0,0,1,0]
但我无法理解其背后的原理......
为什么不直接训练相同的模型来输出 y = 3
或 y = 4
等类
这看起来更加灵活,因为我可以想象有一个包含 200 万个可能类别的多分类问题,并且输出 0-2,000,000 之间的数字比为每个类别输出 2,000,000 个项目的张量要高效得多结果。
我错过了什么?
最佳答案
理想情况下,您可以训练模型对输入实例进行分类并生成单个输出。类似的东西
y=1
表示 input=dog
,y=2
表示 input=airplane
。然而,这样的方法会带来很多问题:
y=1.5
?事实上,您正在做的是将多类分类问题视为回归问题。这是局部错误的(除非您正在进行二元分类,在这种情况下,正输出和负输出就是您所需要的一切)。
为了避免这些(和其他)问题,我们使用最后一层神经元,并将高激活与正确的类别相关联。
one-hot 编码代表这样一个事实:当存在特定输入时,您希望强制网络具有单个高激活输出。
这样,每个 input=dog
都会有 1, 0, 0
作为输出,依此类推。
通过这种方式,您可以正确处理离散分类问题,产生离散输出并且可以很好地解释(事实上,您始终可以使用 tf.argmax 提取具有最高激活值的输出神经元) ,即使您的网络尚未学会生成完美的 one-hot 编码,您也将能够毫无疑问地提取最可能的正确输出)
关于machine-learning - 机器学习多分类: Why use 'one-hot' encoding instead of a number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44760064/
我是一名优秀的程序员,十分优秀!