Keras 是否需要一种热编码?
Is one hot encoding required in Keras?
我有一个标签为 0-4 的数据集。我使用以下代码将它们一次性编码为 np 数组:labels = (np.arange(5) == labels[:, None]).astype(np.float32)
。我的问题是,我们是否必须对它们进行一次热编码?我可以只保留标签 numeric/float 从 0-4 并使用它们吗?如果有怎么办?
一次热编码使您能够估计每个 class 的概率。对于单个实数或整数 class 编码,网络永远不会为您提供相同的信息。如果你有类似的 classes 1 和 5 并且网络可能会混淆它们,它会给你平均结果,它会是 1 和 5 之间的某个数字,它可能是 2,3 或 4 以及任何在之间,但是这些数字编码了你的 classes,所以这将是完全错误的输出。
你的标签是什么?
他们是"levels"、"intensity"还是一些"measure"??
如果是,最好不要对它们进行编码,只需将它们压缩在 0 和 1 之间。然后您的模型将能够计算出一个结果,即强度。但它永远不会准确。
如果不是,那么您应该对您的标签进行编码,因为每个数字彼此不相关,它们是 "discrete",并且您的模型最好也显示离散结果。然后每个结果将是每个 class 结果的可能性(可能不完全是概率,具体取决于模型的参数)。
所以,简而言之:如果你想测量某物的强度,一个变量。如果您想要不同 "classes" 的可能性,请创建单热向量。
我有一个标签为 0-4 的数据集。我使用以下代码将它们一次性编码为 np 数组:labels = (np.arange(5) == labels[:, None]).astype(np.float32)
。我的问题是,我们是否必须对它们进行一次热编码?我可以只保留标签 numeric/float 从 0-4 并使用它们吗?如果有怎么办?
一次热编码使您能够估计每个 class 的概率。对于单个实数或整数 class 编码,网络永远不会为您提供相同的信息。如果你有类似的 classes 1 和 5 并且网络可能会混淆它们,它会给你平均结果,它会是 1 和 5 之间的某个数字,它可能是 2,3 或 4 以及任何在之间,但是这些数字编码了你的 classes,所以这将是完全错误的输出。
你的标签是什么?
他们是"levels"、"intensity"还是一些"measure"??
如果是,最好不要对它们进行编码,只需将它们压缩在 0 和 1 之间。然后您的模型将能够计算出一个结果,即强度。但它永远不会准确。
如果不是,那么您应该对您的标签进行编码,因为每个数字彼此不相关,它们是 "discrete",并且您的模型最好也显示离散结果。然后每个结果将是每个 class 结果的可能性(可能不完全是概率,具体取决于模型的参数)。
所以,简而言之:如果你想测量某物的强度,一个变量。如果您想要不同 "classes" 的可能性,请创建单热向量。