如何解决如何在不使用循环的情况下使用NumPy在Python中逐行应用均方误差
我正在构建一个原始的神经网络来模拟与门。损失函数是MSE:
def mse(predicted,desired):
return np.square(np.subtract(predicted,desired)).mean()
以下是预测和所需输出(又称标签):
predicted = np.array
([[0.5000,0.5000],# 0 AND 0
[0.4721,0.5279],# 0 AND 1
[0.3049,0.6951],# 1 AND 0
[0.3345,0.6655]]) # 1 AND 1
desired = np.array
([[1,0],# False
[1,# False
[0,1]]) # True
每行(在上述两个矩阵中)都表示一种情况。我想这样将所有案例保持在一起,而不是将它们拆分为向量。问题是,我需要单独对待每一行。
我正在尝试获得以下结果,但我却没能完成
:returned output =
[0.2500,# 1st CASE ERROR
0.2786,# 2nd CASE ERROR
0.4831,# 3rd CASE ERROR
0.1118] # 4th CASE ERROR
我尝试了以下功能...
np.apply_along_axis(mse,1,predicted,desired)
但是它不起作用,因为“需求” 被作为整个矩阵而不是一次传递。那么,有什么方法可以在不更改“ mse函数”实现或循环的情况下实现这一目标?
解决方法
由于所有数据都以格式良好的ndarrays组成,因此您可以使NumPy承担所有繁重的工作。在这种情况下,您可以将for
循环转换为沿数组维度之一的约简。
np.square(np.subtract(predicted,desired)).mean(1)
或
((predicted-desired)**2).mean(1)
这是更易读的IMO。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。