【问题标题】:Is one hot encoding required in Keras?Keras 需要一种热编码吗?
【发布时间】:2017-08-29 16:13:33
【问题描述】:

我有一个标签为 0-4 的数据集。我使用以下代码将它们一次性编码为 np 数组:labels = (np.arange(5) == labels[:, None]).astype(np.float32)。我的问题是,我们必须对它们进行一次热编码吗?我可以将标签数字/浮点数保持在 0-4 并使用它们吗?如果有怎么办?

【问题讨论】:

  • 您会将数据应用到哪种模型?
  • 我不确定我是否遵循。什么样的模型?

标签: machine-learning tensorflow keras one-hot-encoding


【解决方案1】:

你的标签是什么?

它们是“水平”、“强度”还是某种“度量”??

  • 如果是,最好不要对它们进行编码,只需将它们压缩在 0 和 1 之间。然后您的模型将能够计算一个结果,即强度。但它永远不会是准确的。

  • 如果不是,那么您应该对标签进行编码,因为每个数字彼此不相关,它们是“离散的”,并且您的模型最好也显示离散结果。然后每个结果将是每个类的结果的可能性(可能不完全是概率取决于您的模型的参数)。


因此,简而言之:如果您想测量某物的强度,请使用一个 var。如果您想要不同“类”的可能性,请创建单热向量。

【讨论】:

  • 知道了。它们是层次。只是 0-4 的离散整数。谢谢。
【解决方案2】:

一个热编码使您能够估计每个类别的概率。对于单个实数或整数类编码,网络永远不会为您提供相同的信息。如果您有类似的 1 和 5 类并且网络可能会混淆它们,它会给您平均结果,它将是 1 和 5 之间的某个数字,它可能是 2,3 或 4 以及介于两者之间的任何数字,但是这些数字对你的类进行编码,所以这将是完全错误的输出。

【讨论】:

  • 谢谢。你的回答也是正确的。我投了赞成票。不幸的是,我只能标记一个。
猜你喜欢
  • 2020-10-26
  • 2020-01-16
  • 2020-08-28
  • 2016-03-19
  • 1970-01-01
  • 2018-10-25
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多