convert_to_one_hot函数的代码为:
def convert_to_one_hot(Y, C):
Y = np.eye(C)[Y.reshape(-1)].T
return Y
其中np.eye(C)是生成一个C阶的单位矩阵,会根据后面方括号"[ ]"里的矩阵进行1的调整。
举个例子就是:
import torch
import numpy as np
# print(torch.cuda.is_available())
C = 9
Y = np.array([[2,3,4],
[3,4,5],
[4,5,6]])
print(Y)
CC = np.eye(C)
print(CC)
YY = Y.reshape(-1)
print(YY)
oneHot = np.eye(C)[Y.reshape(-1)].T
print(oneHot)
得到如下结果:
[[2 3 4]
[3 4 5]
[4 5 6]]
[[1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 1.]]
[2 3 4 3 4 5 4 5 6]
[[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 1. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 1.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]]