如何解决Keras用to_categorical做独热编码时的索引越界错误
错误原因
tf.keras.utils.to_categorical 默认要求输入的类别索引从0开始计数。你的标签取值范围是15,最大索引值为5,当你设置`num_classes=5`时,生成的one-hot张量仅支持索引04,遇到标签值5时就会触发越界错误。
修复方案
方案1(推荐):将标签映射为0~4的取值范围
直接对原标签做减1操作,对齐0起始的索引要求,无冗余维度:
y = df.iloc[:,10].values # 标签从1~5转为0~4 y = y - 1 y = tf.keras.utils.to_categorical(y, num_classes = 5) y
方案2:调整类别数适配1起始的标签
如果需要保留原标签的数值含义,可以将num_classes设置为6,再剔除无意义的第0列:
y = df.iloc[:,10].values y = tf.keras.utils.to_categorical(y, num_classes = 6) # 剔除索引0对应的空列,得到5维one-hot编码 y = y[:, 1:] y
内容的提问来源于stack exchange,提问作者emmasa
相关产品推荐
相关产品推荐

