【问题标题】:Label scalar into one hot in Tensorr flow code?在张量流代码中将标量标记为一个热点?
【发布时间】:2017-09-18 12:12:17
【问题描述】:

有人可以指导我从标量转换为热值是什么意思吗? labels_dense.shape[0] 的目的是什么,最后为什么标签一 hot.flat 等于一? def dense_to_one_hot(labels_dense, num_classes=10): """Convert class labels from scalars to one-hot vectors""" num_labels = labels_dense.shape[0] index_offset = np.arange(num_labels) * num_classes labels_one_hot = np.zeros((num_labels, num_classes)) labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1 return labels_one_hot

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    我认为您可能会发现以下描述机器学习中一种热编码如何工作的答案很有帮助: One Hot Encoding for Machine learning

    【讨论】:

      【解决方案2】:

      我遇到了同样的function 并写了一个更简单的理解。我使用的数字 0 到 4 代表 5 个类别。

      labels_dense.shape[0] 的作用是什么?

      在这个例子中它返回标签的数量是'10'。

      这段代码是什么意思?

      labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1
      

      如您在输出中看到的那样,将“1”放在正确的位置是符合逻辑的。它只是从整个 one-hot 表示的开头计算位置。

      因此,要将数字“0”表示为 one-hot 向量,第 45 位应为“1”。这对应于最后一个向量的第 0 个元素。

      所以

      [1. 0. 0. 0. 0.]
      

      当我们有 5 个类时,是数字“0”的 one-hot 表示。

      def onehot():
      
          labels_dense = numpy.array([1,2,3,4,3,4,3,2,1,0])
      
          print('Shape of labels_dense is ' + str(labels_dense.shape))
      
          index_offset = numpy.arange(10) * 5
      
          print('Index offset is \n' + str(index_offset))
      
          labels_one_hot = numpy.zeros((10, 5))
      
          print('index_offset + labels_dense.ravel() is\n' + str(index_offset + labels_dense.ravel()))
      
          labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1
      
          print('One-hot labels are ' + str(labels_one_hot))
      

      输出是这样的。

      Shape of labels_dense is (10,)
      Index offset is 
      [ 0  5 10 15 20 25 30 35 40 45]
      index_offset + labels_dense.ravel() is
      [ 1  7 13 19 23 29 33 37 41 45]
      One-hot labels are 
      
      [[0. 1. 0. 0. 0.]
       [0. 0. 1. 0. 0.]
       [0. 0. 0. 1. 0.]
       [0. 0. 0. 0. 1.]
       [0. 0. 0. 1. 0.]
       [0. 0. 0. 0. 1.]
       [0. 0. 0. 1. 0.]
       [0. 0. 1. 0. 0.]
       [0. 1. 0. 0. 0.]
       [1. 0. 0. 0. 0.]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-24
        • 2020-09-26
        • 1970-01-01
        • 2022-09-29
        • 2023-04-05
        • 1970-01-01
        • 2019-11-06
        相关资源
        最近更新 更多