- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我想阅读有关curve_fit
的文档 here .它包含以下示例:
import numpy as np
import scipy.optimize as so
def func(x, a,b,c ):
return a * np.exp(-b * x) + c
a,b,c = 2.5, 1.3, 0.5
nx = 500
noiseAlpha = 0.5
#
xdata = np.linspace(0, 4, nx)
y = func(xdata, a,b,c)
ydata = y + noiseAlpha * np.random.normal(size=len(xdata))
如果我现在调用 curve_fit
,它将逼近导数,因为我没有提供任何东西。让我们计时:
%%timeit
popt, pcov = so.curve_fit(func, xdata, ydata )
1000 loops, best of 3: 787 µs per loop
事实上 curve_fit
调用 leastsq
(doc here) ,它接受用于计算雅可比矩阵的 Dfun
参数。所以我这样做了:
def myDfun( abc, xdata, ydata, f ) :
a,b,c = abc
ebx = np.exp(-b * xdata)
res = np.vstack( ( ebx, a * -xdata * ebx, np.ones(len(xdata)) ) ).T
return res
我再次计时:
%%timeit
popt, pcov = so.curve_fit(func, xdata, ydata, Dfun=myDfun )
1000 loops, best of 3: 858 µs per loop
呃?使用 Jacobian 比近似它慢?我做错了什么吗?
最佳答案
不是真正的答案,但我的感觉是这取决于问题的大小。对于小规模 (n=500),花在评估 jacobian(使用提供的 jac)上的额外时间可能最终不会得到返回。
n=500,有刺戳:
100 loops, best of 3: 1.50 ms per loop
没有:
100 loops, best of 3: 1.57 ms per loop
n=5000,有刺戳:
100 loops, best of 3: 5.07 ms per loop
没有:
100 loops, best of 3: 6.46 ms per loop
n=50000,有刺戳:
100 loops, best of 3: 49.1 ms per loop
没有:
100 loops, best of 3: 59.2 ms per loop
您可能还需要考虑重写 jacobian 函数,例如摆脱昂贵的 .T()
可以带来约 15% 的加速:
def myDfun2( abc, xdata, ydata, f ) :
a,b,c = abc
ebx = np.exp(-b * xdata)
res = np.hstack( ( ebx.reshape(-1,1), (a * -xdata * ebx).reshape(-1,1), np.ones((len(xdata),1)) ) )
return res
关于python - 给定雅可比行列式时,Scipy 的 curve_fit/leastsq 会变慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24391242/
现在我使用 Jacoco 来了解整个测试套件的覆盖率,但我需要按测试用例分解覆盖率信息。 我需要创建一个程序来执行此操作,因为我们需要自动化大型套件。我想这应该通过使用 API 来完成... 有办法做
我有一个包含多个模块的 Java-Gradle 项目,这意味着多个 build.gradle 文件和多个测试文件夹。 我有一个主 build.gradle,我成功地将所有多 jacoco 报告聚合到一
我有一个 Maven 项目,我想使用 jacoco 进行代码覆盖。这是我的 pom 的相关部分 org.jacoco
当我运行 gradlew test jacocoTestReport 任务 jacocoTestReport 运行并且我得到一份测试报告。 当我运行 gradlew integTest jacocoT
尝试使用离线检测通过 jacoco 获取覆盖范围(无法使用即时检测:由于 powermock 测试用例)的 Maven 项目。将 jacocoagent.jar 添加到 Surefire 插件的类路径
我是一名优秀的程序员,十分优秀!