【发布时间】:2021-07-23 03:49:53
【问题描述】:
我的分割标签有问题,标签可以有这个值:0、200、210、220、230、240。我使用这个代码:
mask = tf.keras.utils.to_categorical(y, 241)
代码有效,但我想只用 6 个类映射掩码,这可能吗?
mask = tf.keras.utils.to_categorical(y,6)
【问题讨论】:
标签: python tensorflow keras
我的分割标签有问题,标签可以有这个值:0、200、210、220、230、240。我使用这个代码:
mask = tf.keras.utils.to_categorical(y, 241)
代码有效,但我想只用 6 个类映射掩码,这可能吗?
mask = tf.keras.utils.to_categorical(y,6)
【问题讨论】:
标签: python tensorflow keras
解决方案是首先用有序索引替换您的列表,然后将其分类。因为to_categorical 期望您的列表有索引。
如果您的类别有限,这里是示例代码:
y = [0, 200,210,0,240,230,200,0,210,220,240,0]
replacements = {
0: 0,
200: 1,
210: 2,
220: 3,
230: 4,
240: 5,
}
y = [replacements.get(x, x) for x in y]
y = tf.keras.utils.to_categorical(y)
或者你可以使用更简单的方法:
from sklearn.preprocessing import LabelEncoder
y = tf.keras.utils.to_categorical(LabelEncoder().fit_transform(y))
如果你打印y:
array([[1., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0.],
[1., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1.],
[0., 0., 0., 0., 1., 0.],
[0., 1., 0., 0., 0., 0.],
[1., 0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0.],
[0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 0., 1.],
[1., 0., 0., 0., 0., 0.]], dtype=float32)
【讨论】: