【问题标题】:Tensorflow to categorical problem, i want map my masks for segmentation?Tensorflow 到分类问题,我想映射我的掩码进行分割?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 我的向量y是图片的向量,可以用同样的方法吗?
    • 图像数据不是一个类别。如果你想对你的数据进行分类,你应该有一个离散和有限的数据来将它们分成类别。但是,您可以更新您的问题并分享您的矢量图像以及示例和说明,以获得更好的帮助。
    • 看来你处理这个问题已经有一段时间了。如果我的解决方案不能如您所愿,请分享更多您想要修改的代码和数据结构以获得更好的帮助。
    猜你喜欢
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2021-04-15
    相关资源
    最近更新 更多