我用一个热编码器编码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
这些值不应该相等吗?你知道吗
问题在于
a!=b
返回一个数组数组,检查每个索引处的元素是否不同。第一个返回一个数组数组,其中第一个值是[False False True True]
,这意味着对于a
和b
中的第一个项,前两个项相同,后两个不同。请尝试以下操作:第二个返回一个数组,根据需要比较索引:
相关问题 更多 >
编程相关推荐