Tensorflow 将标量标记为一个热的Tensorr流代码?

Tensorflow 将标量标记为一个热的Tensorr流代码?,tensorflow,Tensorflow,有人能告诉我从标量到热的转换是什么意思吗?而标签\u dense.shape[0]的目的是什么?最后为什么标签一个hot.flat等于一个? def densite\u to\u one\u hot(标签密集,num\u class=10): “”“将类标签从标量转换为一个热向量”“” num\u labels=标签密度。形状[0] 索引偏移量=np.arange(num\u标签)*num\u类 labels_one_hot=np.zero((num_标签,num_类)) labels\u on

有人能告诉我从标量到热的转换是什么意思吗?而
标签\u dense.shape[0]
的目的是什么?最后为什么标签一个hot.flat等于一个?
def densite\u to\u one\u hot(标签密集,num\u class=10):
“”“将类标签从标量转换为一个热向量”“”
num\u labels=标签密度。形状[0]
索引偏移量=np.arange(num\u标签)*num\u类
labels_one_hot=np.zero((num_标签,num_类))
labels\u one\u hot.flat[index\u offset+labels\u densite.ravel()]=1

return labels\u one\u hot

我想你可能会发现这个答案描述了一个hot编码在机器学习中的作用:

我遇到了同样的问题,并写了一个更简单的解释。我使用的数字0到4代表5类

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))
标签\u dense.shape[0]的用途是什么

它返回本例中为“10”的标签数

这个代码是什么意思

labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1
正如您在输出中看到的,将“1”置于正确位置是合乎逻辑的。它只是从整个一个热表示的开始计算位置

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

所以

是当我们有5个类时数字“0”的一个热门表示形式

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.]]