如何在python中构建OneHot解码器

比拉尔

我有encoded我的图片(口罩),尺寸(img_width X IMG_HEIGHT×1)OneHotEncoder这种方式:

import numpy as np

def OneHotEncoding(im,n_classes):
  one_hot = np.zeros((im.shape[0], im.shape[1], n_classes),dtype=np.uint8)
  for i, unique_value in enumerate(np.unique(im)):
    one_hot[:, :, i][im == unique_value] = 1
  return one_hot

在使用深度学习进行了一些数据操作之后,softmax激活函数将导致概率而不是0and1值,因此在我的解码器中,我想实现以下方法:

  1. 阈值获得01获得
  2. 将每个通道的权重等于通道索引。
  3. 沿通道轴取标签之间的最大值。
import numpy as np

arr = np.array([
    [[0.1,0.2,0,5],[0.2,0.4,0.7],[0.3,0.5,0.8]],
    [[0.3,0.6,0  ],[0.4,0.9,0.1],[0  ,0  ,0.2]],
    [[0.7,0.1,0.1],[0,6,0.1,0.1],[0.6,0.6,0.3]],
    [[0.6,0.2,0.3],[0.4,0.5,0.3],[0.1,0.2,0.7]]
])

# print(arr.dtype,arr.shape)

def oneHotDecoder(img):
    # Thresholding
    img[img<0.5]=0
    img[img>=0.5]=1
    # weigts of the labels
    img = [i*img[:,:,i] for i in range(img.shape[2])]
    # take the max label
    img = np.amax(img,axis=2)
    print(img.shape)
    return img

arr2 = oneHotDecoder(arr)
print(arr2)

我的问题是:

  1. 如何摆脱错误: line 15, in oneHotDecoder img[img<0.5]=0 TypeError: '<' not supported between instances of 'list' and 'float'
  2. 您建议我改善实施中的其他任何问题吗?

提前致谢。

锡安索夫

您有带逗号的错字和带有某些项目的点(例如,第一个列表应为[0.1, 0.2, 0.5]而不是[0.1, 0.2, 0, 5])。

固定列表为:

l = [
      [[0.1,0.2,0.5],[0.2,0.4,0.7],[0.3,0.5,0.8]],
      [[0.3,0.6,0  ],[0.4,0.9,0.1],[0  ,0  ,0.2]],
      [[0.7,0.1,0.1],[0.6,0.1,0.1],[0.6,0.6,0.3]],
      [[0.6,0.2,0.3],[0.4,0.5,0.3],[0.1,0.2,0.7]]
]

然后,您可以执行以下操作:

np.array(l)  # np.dstack(l) would work as well

这将产生:

array([[[0.1, 0.2, 0.5],
        [0.2, 0.4, 0.7],
        [0.3, 0.5, 0.8]],
       [[0.3, 0.6, 0. ],
        [0.4, 0.9, 0.1],
        [0. , 0. , 0.2]],
       [[0.7, 0.1, 0.1],
        [0.6, 0.1, 0.1],
        [0.6, 0.6, 0.3]],
       [[0.6, 0.2, 0.3],
        [0.4, 0.5, 0.3],
        [0.1, 0.2, 0.7]]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中修复“ UnicodeDecodeError:'utf-8'编解码器无法解码字节...”?

如何在Tensorflow中使用动态rnn构建解码器?

构建编码器-解码器

如何在Linux上的python中使用mbcs编解码器读取csv文件?

如何在Python(2.7)中使Caesar解码器成为圆形?

如何在Quarkus中托管自定义Netty编解码器?

如何在Grails 3中更改每个插件的编解码器?

如何在iOS上的ProRes编解码器中录制视频?

如何在PJSIP Android中更改编解码器优先级

如何在Circe中创建自定义解码器以解析时间值

如何在circe中覆盖默认编解码器?

如何在VLC中播放webm(使用VP9编解码器)?

如何在webrtc sdp中删除视频编解码器?

如何在VLC中禁用特定的解码器/解复用器

如何遍历解码器?

构建AIS消息解码器

如何从可编码结构中捕获init(来自解码器:解码器)中的错误?

处理原始视频时,如何在H.264编解码器中构造P帧

如何在JavaScript中的音频Blob上设置编解码器,采样率和比特率?

如何在用于Linux的Linphone 4.3.0新SDK中启用G729音频编解码器?

如何使用缺少的编解码器从源代码构建 Chromium(在 Windows 上)

使用pyarrow的Python错误-ArrowNotImplementedError:未构建对编解码器'snappy'的支持

解码器中的Apache Beam IOException

Golang中的多类型解码器

解码器中包含哪些元素?

Swift 4中的通用解码器

Elm 0.18中的JSON解码器

VLC中的熵解码器

如何在训练编码器解码器模型期间填充序列