OneHotEncod前后的结果不同

2024-03-28 10:04:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我用一个热编码器编码y向量,运行我的神经网络,得到输出。 这里a表示y向量,b表示预测结果

a = np.array([[0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [1., 0., 0., 0.],
       [1., 0., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.]])
b=np.array([[0., 0., 0., 1.],
       [1., 0., 0., 0.],
       [0., 0., 1., 0.],
       [0., 1., 0., 0.],
       [1., 0., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [1., 0., 0., 0.],
       [0., 0., 0., 1.],
       [0., 1., 0., 0.]])
print(np.mean(a!=b))
print(np.mean(np.argmax(a,1)!=np.argmax(b,1)))

但是在还原编码(使用np.argmax(a,1))并得到输出之后:

0.35
0.7

这些值不应该相等吗?你知道吗


Tags: 编码np神经网络编码器meanarray向量print
1条回答
网友
1楼 · 发布于 2024-03-28 10:04:44

问题在于a!=b返回一个数组数组,检查每个索引处的元素是否不同。第一个返回一个数组数组,其中第一个值是[False False True True],这意味着对于ab中的第一个项,前两个项相同,后两个不同。请尝试以下操作:

print(a!=b)
>>>[[False False  True  True], [ True False  True False] ...

第二个返回一个数组,根据需要比较索引:

print(np.argmax(a,1)!=np.argmax(b,1))
>>>[ True  True False  True  True False  True False  True  True]

相关问题 更多 >