如何解决在perfplot上访问未通过相等检查的数据
我正在运行比较两个不同功能f1
和f2
的性能的脚本。它无法通过equality_check
并引发AssertionError: Equality check failure. (f1,f2)
。如何在失败的地方访问参数和函数的输出?
perfplot.show(
setup=lambda n: np.random.randint(0,n,size = n),kernels=[f1,f2],n_range=[2 ** k for k in range(3,14)],logx=True,logy=True,xlabel="n",equality_check=lambda x,y: np.array_equal(x,y)
)
解决方法
在每一步中,参数通过perfplot传递给函数f1
和f2
,两个函数的输出都传递给{的参数equality_check
指定的函数{1}}(或 perfplot.show
)函数:
perfplot.bench
在您提供的代码中,您使用匿名函数 (lambda) 定义了该参数:
equality_check=foo # foo(x,y)
检查这两个函数是否确实产生了相同的结果(对于相同的输入),并且该结果是否是具有相同形状的 NumPy 数组,因为您使用的是 equality_check=lambda x,y: np.array_equal(x,y)
。
如果您仍然想在此过程中检查这些值(但我建议您先检查函数 np.array_equal(x,y)
和 f1
),您可以如下定义 f2
函数:
equality_check
这样,导致异常的 def foo(x,y):
equal = np.array_equal(x,y)
if not equal:
print(x,y)
return equal
和 f1
的输出将被打印出来。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。