张量流到分类问题,我想映射我的掩码进行分割



我对用于分割的标签有问题,标签可以有这个值:0、200、210、220、230、240。我使用这个代码:

mask = tf.keras.utils.to_categorical(y, 241)

代码可以工作,但我只想用6个类映射掩码,这可能吗?

mask = tf.keras.utils.to_categorical(y,6)

解决方案是首先用有序索引替换列表,然后使其分类。因为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)

最新更新