牛顿法与拟牛顿法

文章目录

    • 牛顿法&拟牛顿法
      • 1 牛顿法
      • 2 拟牛顿法
        • 2.1 对称秩1校正
        • 2.2 DFP
        • 2.3 BFGS

牛顿法&拟牛顿法

设无约束优化问题:
min ⁡ f ( x ) , x ∈ R n \min f(x),{\kern 1pt} \,x \in {R^n} minf(x),xRn

1 牛顿法

基本思想,通过泰勒二阶展开,通过对泰勒展开求导,并令其等于0,从而求得极小值。

f ( x ) f(x) f(x) x k x_k xk处进行泰勒展开:
f ( x ) ≈ f ( x k ) + Δ f ( x k ) ( x − x k ) + 1 2 ( x − x k ) T Δ 2 f ( x k ) ( x − x k ) + 0 ( ∣ ∣ x − x k ∣ ∣ 2 ) f(x) \approx f({x_k}) + {\rm{\Delta }}f({x_k})(x - {x_k}) + \frac{1}{2}{\left( {x - {x_k}} \right)^T}{{\rm{\Delta }}^2}f({x_k})(x - {x_k}) + 0(||x - {x_k}|{|^2}) f(x)f(xk)+Δf(xk)(xxk)+21(xxk)TΔ2f(xk)(xxk)+0(∣∣xxk2)

对泰勒式及进行求导:
∇ f ( x ) ≈ ∇ f ( x k ) + ∇ 2 f ( x k ) ( x − x k ) \nabla f(x) \approx \nabla f({x_k}) + {\nabla ^2}f({x_k})(x - {x_k}) f(x)f(xk)+2f(xk)(xxk)

令上次为0,便可求得极小值位置:
∇ f ( x k ) = − ∇ 2 f ( x k ) ( x − x k ) \nabla f({x_k}){\rm{ = }} - {\nabla ^2}f({x_k})(x - {x_k}) f(xk)=2f(xk)(xxk)

得:
x = x k − ∇ 2 f ( x k ) − 1 ∇ f ( x k ) x{\rm{ = }}{x_k} - {\nabla ^2}f{({x_k})^{{\rm{ - 1}}}}\nabla f({x_k}) x=xk2f(xk)1f(xk)
我们便可得下降到最小值的方向: − ∇ 2 f ( x k ) − 1 ∇ f ( x k ) -{\nabla ^2}f{({x_k})^{{\rm{ - 1}}}}\nabla f({x_k}) 2f(xk)1f(xk)

牛顿法流程:
设定初始点: x 0 x_0 x0,迭代步数 k = 0 k=0 k=0
开始迭代:
1)计算梯度,Hessian矩阵,从而得到牛顿迭代方向:
∇ f ( x k ) 2 , f ( x k ) , d k = − ∇ 2 f ( x k ) − 1 ∇ f ( x k ) \nabla f{({x_k})^2},\ \ f({x_k}),\ \ {d_k} = - {\nabla ^2}f{({x_k})^{{\rm{ - 1}}}}\nabla f({x_k}) f(xk)2,  f(xk),  dk=2f(xk)1f(xk)

2)判断当前迭代步长是否足够小或达到迭代次数,是则停止,否,继续下一步

3)更新:
x = x k + d k k + + \begin{array}{l} x{\rm{ = }}{x_k} + {d_k}\\ k ++ \end{array} x=xk+dkk++
转步骤1)

Tips:
此外,牛顿法,是局部收敛的。因为是基于求解极值的方法,因而会局限于局部极小值,因而要求初始点选取在全局最优解附近。
牛顿法有一次收敛性。但由于 ∇ 2 f ( x k ) {\nabla ^2}f({x_k}) 2f(xk)不能保证一定正定,会出现秩为0的情况,此时,牛顿法会失效。因而基于修正hessian矩阵的算法出现,如LM算法。

2 拟牛顿法

拟牛顿法是一种基于牛顿法的变形,提供一种思想,包含多种解决方案。
基本思想:牛顿法虽收敛速度快,但要计算Hessian矩阵及其逆矩阵,且Hessian矩阵不一定正定,为了减少计算量,拟牛顿法被提出,其基本思想是使用目标函数的一阶信息近似牛顿法的Hessian矩阵。

拟牛顿法的条件:使用k时刻的一阶二阶近似出 k + 1 k+1 k+1时刻的二阶Hessian矩阵。
我们将目标函数 f ( x ) f(x) f(x) x k + 1 x_{k+1} xk+1处进行泰勒展开:
f ( x ) ≈ f ( x k + 1 ) + Δ f ( x k + 1 ) ( x − x k + 1 ) + 1 2 ( x − x k + 1 ) T Δ 2 f ( x k + 1 ) ( x − x k + 1 ) + 0 ( ∣ ∣ x − x k + ! ∣ ∣ 2 ) f(x) \approx f({x_{k + 1}}) + {\rm{\Delta }}f({x_{k + 1}})(x - {x_{k + 1}}) + \frac{1}{2}{\left( {x - {x_{k + 1}}} \right)^T}{{\rm{\Delta }}^2}f({x_{k + 1}})(x - {x_{k + 1}}) + 0(||x - {x_{k + !}}|{|^2}) f(x)f(xk+1)+Δf(xk+1)(xxk+1)+21(xxk+1)TΔ2f(xk+1)(xxk+1)+0(∣∣xxk+!2)

对泰勒式及进行求导:
∇ f ( x ) ≈ ∇ f ( x k + 1 ) + ∇ 2 f ( x k + 1 ) ( x − x k + 1 ) \nabla f(x) \approx \nabla f({x_{k + 1}}) + {\nabla ^2}f({x_{k + 1}})(x - {x_{k + 1}}) f(x)f(xk+1)+2f(xk+1)(xxk+1)

x = x k , g k = ∇ f ( x k + 1 ) x = {x_k},\,{g_k} = \nabla f({x_{k + 1}}) x=xk,gk=f(xk+1),则得:
g k − g k + 1 ≈ ∇ 2 f ( x k + 1 ) ( x k − x k + 1 ) {g_k} - {g_{k + 1}} \approx {\nabla ^2}f({x_{k + 1}})({x_k} - {x_{k + 1}}) gkgk+12f(xk+1)(xkxk+1)

p k = g k − g k + 1 , q k = x k − x k + 1 , H k + 1 = ∇ 2 f ( x k + 1 ) {p_k} = {g_k} - {g_{k + 1}},\,\,{q_k} = {x_k} - {x_{k + 1}},\,\,{H_{k + 1}} = {\nabla ^2}f({x_{k + 1}}) pk=gkgk+1,qk=xkxk+1,Hk+1=2f(xk+1),则得拟牛顿法的条件:
p k ≈ H k + 1 q k {p_k} \approx {H_{k + 1}}{q_k} pkHk+1qk

Tips:
关于这个公式的理解,可以将x想为时间t,即,两帧(两次迭代之间 k − > k + 1 k->k+1 k>k+1)的速度变化,等于 k + 1 k+1 k+1时刻的加速度*两帧之间的时差。
此外,如果我们对目标函数在 x k x_k xk处展开,再将 x k + 1 x_{k+1} xk+1代入,可以得到 。这里,引入思考,泰勒展开式只保证在展开点的一定邻域内有效,当 x k x_k xk x k + 1 x_{k+1} xk+1相差较大时,以上拟牛顿法的条件是否也有一定误差。

牛顿法是使 H k + 1 = H k + Δ H k {H_{k + 1}} = {H_k} + \Delta {H_k} Hk+1=Hk+ΔHk来拟合 H k + 1 {H_{k + 1}} Hk+1

2.1 对称秩1校正

这个思想是,保证 的半正定及对称性,我们令:
Δ H k = v k v k T , v k ≠ 0 \Delta {H_k} = {v_k}v_k^T,{v_k} \ne 0 ΔHk=vkvkTvk=0

由于 v k v k T {v_k}v_k^T vkvkT使得 Δ H k \Delta {H_k} ΔHk的秩为1,故而此方法名为秩1校正。
代入拟牛顿法条件
p k ≈ H k + 1 q k {p_k} \approx {H_{k + 1}}{q_k} pkHk+1qk p k ≈ H k + 1 q k = ( H k + Δ H k ) q k p k = ( H k + v k v k T ) q k = H k q k + v k v k T q k \begin{array}{l} {p_k} \approx {H_{k + 1}}{q_k} = \left( {{H_k} + \Delta {H_k}} \right){q_k}\\ {p_k} = \left( {{H_k} + {v_k}v_k^T} \right){q_k} = {H_k}{q_k} + {v_k}v_k^T{q_k} \end{array} pkHk+1qk=(Hk+ΔHk)qkpk=(Hk+vkvkT)qk=Hkqk+vkvkTqk

从而得: v k v k T q k = p k − H k q k {v_k}v_k^T{q_k} = {p_k} - {H_k}{q_k} vkvkTqk=pkHkqk
由于 q k {q_k} qk为向量,上式可以看成 A x = b Ax=b Ax=b A A A为对称对阵,求 A A A的问题。
等式两侧都乘以 ( p k − H k q k ) T {\left( {{p_k} - {H_k}{q_k}} \right)^T} (pkHkqk)T,得:
v k v k T q k ( p k − H k q k ) T = ( p k − H k q k ) ( p k − H k q k ) T {v_k}v_k^T{q_k}{\left( {{p_k} - {H_k}{q_k}} \right)^T} = \left( {{p_k} - {H_k}{q_k}} \right){\left( {{p_k} - {H_k}{q_k}} \right)^T} vkvkTqk(pkHkqk)T=(pkHkqk)(pkHkqk)T
进而得:
v k v k T = ( p k − H k q k ) ( p k − H k q k ) T q k ( p k − H k q k ) T {v_k}v_k^T = \frac{{\left( {{p_k} - {H_k}{q_k}} \right){{\left( {{p_k} - {H_k}{q_k}} \right)}^T}}}{{{q_k}{{\left( {{p_k} - {H_k}{q_k}} \right)}^T}}} vkvkT=qk(pkHkqk)T(pkHkqk)(pkHkqk)T

因而我们可以发现,秩1校正成立的条件 q k ( p k − H k q k ) T > 0 {q_k}{\left( {{p_k} - {H_k}{q_k}} \right)^T}>0 qk(pkHkqk)T>0

2.2 DFP

基本思想,我们可以从秩1校正中发现 Δ H k \Delta {H_k} ΔHk的是由 p k p_k pk H k q k H_kq_k Hkqk组成的,因而我么可以设计以下方法来完成校正:a和b为系数。
Δ H k = a ( p k p k T ) + b ( H k q k ) ( H k q k ) T = a ( P k P k T ) + b H k q k q k T H k T {\rm{\Delta }}{H_k} = a\left( {{p_k}p_k^T} \right) + b({H_k}{q_k}){({H_k}{q_k})^T} = a\left( {{P_k}P_k^T} \right) + b{H_k}{q_k}q_k^TH_k^T ΔHk=a(pkpkT)+b(Hkqk)(Hkqk)T=a(PkPkT)+bHkqkqkTHkT

代入拟牛顿法条件
p k ≈ H k + 1 q k {p_k} \approx {H_{k + 1}}{q_k} pkHk+1qk p k ≈ H k + 1 q k = ( H k + Δ H k ) q k p k = ( H k + a ( p k p k T ) + b H k q k q k T H k T ) q k = H k q k + a p k p k T q k + b H k q k q k T H k T q k \begin{array}{l} {p_k} \approx {H_{k + 1}}{q_k} = \left( {{H_k} + \Delta {H_k}} \right){q_k}\\ {p_k} = \left( {{H_k} + a\left( {{p_k}p_k^T} \right) + b{H_k}{q_k}q_k^TH_k^T} \right){q_k} = {H_k}{q_k} + a{p_k}p_k^T{q_k} + b{H_k}{q_k}q_k^TH_k^T{q_k} \end{array} pkHk+1qk=(Hk+ΔHk)qkpk=(Hk+a(pkpkT)+bHkqkqkTHkT)qk=Hkqk+apkpkTqk+bHkqkqkTHkTqk

目标转为求系数a和b。根据乘法的结合率,我们可以知道: p k T q k p_k^T{q_k} pkTqk q k T H k T q k q_k^TH_k^T{q_k} qkTHkTqk为常数,因此,可得:
( H k + b q k T H k T q k H k ) q k + ( a p k T q k − 1 ) p k = 0 ⇒ ( 1 + b q k T H k T q k ) H k q k + ( a p k T q k − 1 ) p k = 0 \begin{array}{l} \left( {{H_k} + bq_k^TH_k^T{q_k}{H_k}} \right){q_k} + \left( {ap_k^T{q_k} - 1} \right){p_k} = 0\\ \Rightarrow \left( {1 + bq_k^TH_k^T{q_k}} \right){H_k}{q_k} + \left( {ap_k^T{q_k} - 1} \right){p_k} = 0 \end{array} (Hk+bqkTHkTqkHk)qk+(apkTqk1)pk=0(1+bqkTHkTqk)Hkqk+(apkTqk1)pk=0
p k p_k pk H k q k H_kq_k Hkqk线性无关,则要使上式 = 0 =0 =0成立,则需:
{ 1 + b q k T H k T q k = 0 a p k T q k − 1 = 0 ⇒ { a = 1 p k T q k b = − 1 q k T H k q k \left\{ {\begin{array}{c} {1 + bq_k^TH_k^T{q_k} = 0}\\ {ap_k^T{q_k} - 1 = 0} \end{array}} \right. \Rightarrow \left\{ {\begin{array}{c} {a = \frac{1}{{p_k^T{q_k}}}}\\ {b = - \frac{1}{{q_k^T{H_k}{q_k}}}} \end{array}} \right. {1+bqkTHkTqk=0apkTqk1=0{a=pkTqk1b=qkTHkqk1
从而可得:
Δ H k = p k p k T p k T q k − H k q k ⋅ q k T H k q k T H k q k {\rm{\Delta }}{H_k} = \frac{{{p_k}p_k^T}}{{p_k^T{q_k}}} - \frac{{{H_k}{q_k} \cdot q_k^T{H_k}}}{{q_k^T{H_k}{q_k}}} ΔHk=pkTqkpkpkTqkTHkqkHkqkqkTHk

DFP流程:
设定初始点: x 0 x_0 x0,迭代步数 k = 0 k=0 k=0, (单位矩阵)
开始迭代:
1)计算梯度,Hessian矩阵,从而得到牛顿迭代方向:
∇ f ( x k ) , ∇ 2 f ( x k ) , d k = − H − 1 ∇ f ( x k ) \nabla f({x_k}),\ \ {\nabla ^2}f({x_k}),\ \ {d_k} = - {{\rm{H}}^{{\rm{ - 1}}}}\nabla f({x_k}) f(xk),  2f(xk),  dk=H1f(xk)
2)判断当前迭代步长是否足够小或达到迭代次数,是则停止,否,继续下一步

3)更新:
x = x k + d k ; k + + ; g k + 1 = Δ f ( x k + 1 ) , p k = x k + 1 − x k , q k = g k + 1 − g k ; H k + 1 = H k + p k p k T p k T q k − H k q k ⋅ q k T H k q k T H k q k \begin{array}{l} x{\rm{ = }}{x_k} + {d_k};\ k + + ;\\ {g_{k + 1}} = {\rm{\Delta }}f({x_{k + 1}}),\ \ {p_k} = {x_{k + 1}} - {x_k},\ \ {q_k} = {g_{k + 1}} - {g_k};\\ {H_{k + 1}} = {H_k} + \frac{{{p_k}p_k^T}}{{p_k^T{q_k}}} - \frac{{{H_k}{q_k} \cdot q_k^T{H_k}}}{{q_k^T{H_k}{q_k}}} \end{array} x=xk+dk; k++;gk+1=Δf(xk+1),  pk=xk+1xk,  qk=gk+1gk;Hk+1=Hk+pkTqkpkpkTqkTHkqkHkqkqkTHk
转步骤1)
示例代码:

#include <iostream>
#include <cmath>using namespace std;// 目标函数
double objectiveFunction(double x)
{return pow(x, 2) - 4 * x + 4;
}// 目标函数的一阶导数
double derivativeFunction(double x)
{return 2 * x - 4;
}// 拟牛顿法(BFGS算法)求解函数
double bfgsMethod(double initialGuess, double tolerance)
{double x = initialGuess;double dx = 0.0;double H = 1.0; // 初始Hessian逆矩阵float s = 0.1;do {double g = derivativeFunction(x);double step = -g / H;x = x + s*step;double dg = derivativeFunction(x) - g;// 更新Hessian逆矩阵double deltaX = step;double deltaY = dg;H += (deltaX * deltaX) / (deltaX * deltaY) - (H * deltaY * deltaY * H) / (deltaY * H * deltaY);dx = abs(step);} while (dx > tolerance);return x;
}int main()
{double initialGuess = 1.0; // 初始猜测值double tolerance = 0.0001; // 精度double result = bfgsMethod(initialGuess, tolerance);cout << "Solution: " << result << endl;return 0;
}
2.3 BFGS

基本思想:由于DFP需要求解Hessian阵的逆,因此,BFGS直接拟合Hessian阵的逆来完成迭代。
N k − N k + 1 ≈ ∇ 2 f ( x k + 1 ) − 1 ( g k − g k + 1 ) . ↦ g k − g k ≈ ∇ 2 f ( x k + 1 ) ( x k − 4 k + 1 ) {N_k} - {N_{k + 1}} \approx {\nabla ^2}f{({x_{k + 1}})^{ - 1}}({g_k} - {g_{k + 1}}).\,\,\,\quad \mapsto \quad {g_k} - {g_k} \approx {\nabla ^2}f({x_{k + 1}})({x_k} - 4k + 1) NkNk+12f(xk+1)1(gkgk+1).gkgk2f(xk+1)(xk4k+1)
p k ≈ H k + 1 q k ↦ q k ≈ B k + 1 p k {p_k} \approx {H_{k + 1}}{q_k}\,\quad \mapsto \quad {q_k} \approx {B_{k + 1}}{p_k} pkHk+1qkqkBk+1pk
Δ B k \Delta {B_k} ΔBk的思路,即可以把 Δ H k = p k p k T p k T q k − H k q k ⋅ q k T H k q k T H k q k {\rm{\Delta }}{H_k} = \frac{{{p_k}p_k^T}}{{p_k^T{q_k}}} - \frac{{{H_k}{q_k} \cdot q_k^T{H_k}}}{{q_k^T{H_k}{q_k}}} ΔHk=pkTqkpkpkTqkTHkqkHkqkqkTHk中的 p k {p_k} pk换成 q k q_k qk,将 H k q k {H_k}{q_k} Hkqk替换为 B k p k {B_k}{p_k} Bkpk,最后得:
Δ B k = ( I − q k p k T q k T p k ) B k ( I − p k q k T q k T p k ) + q k q k T q k T p k T {\rm{\Delta }}{B_k} = (I - \frac{{{q_k}p_k^T}}{{q_k^T{p_k}}}){B_k}(I - \frac{{{p_k}q_k^T}}{{q_k^T{p_k}}}) + \frac{{{q_k}q_k^T}}{{q_k^Tp_k^T}} ΔBk=(IqkTpkqkpkT)Bk(IqkTpkpkqkT)+qkTpkTqkqkT
示例代码

#include <iostream>
#include <cmath>using namespace std;// 目标函数
double objectiveFunction(double x)
{return pow(x, 2) - 4 * x + 4;
}// 目标函数的一阶导数
double derivativeFunction(double x)
{return 2 * x - 4;
}// 拟牛顿法(BFGS算法)求解函数
double bfgsMethod(double initialGuess, double tolerance)
{double x = initialGuess;double dx = 0.0;double B = 1.0; // 初始Hessian逆矩阵float s = 0.1;do {double g = derivativeFunction(x);double step = -B*g;x = x + s*step;double dg = derivativeFunction(x) - g;// 更新Hessian逆矩阵double deltaX = step;double deltaY = dg;B += (1-(deltaY * deltaX) / (deltaY * deltaX)) * B *(1-(deltaY * deltaX) / (deltaY * deltaX))+ (deltaY * deltaY) / (deltaY * deltaX);dx = abs(step);} while (dx > tolerance);return x;
}int main()
{double initialGuess = 1.0; // 初始猜测值double tolerance = 0.0001; // 精度double result = bfgsMethod(initialGuess, tolerance);cout << "Solution: " << result << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/656890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Prometheus 容器化部署

实验部署 工作中是基于kube-api的自动发现 1、创建账户绑定集群 kubectl create serviceaccount monitor -n monitor-sa #创建账户 kubectl create clusterrolebinding monitor-clusterrolebinding -n monitor-sa --clusterrolecluster-admin --serviceaccountmonitor-sa:…

FileViewer纯前端预览项目Vue2 demo

FileViewer 项目Vue2 demo 本demo基于vue-clijsvue2.x构建&#xff0c;如果您需要vue3版本的demo&#xff0c;请前往main分支。 适用于Vue2 Webpack&#xff0c;本集成方法要求最低Webpack版本为5&#xff0c;也就是Vue Cli Service 5.0.0以上&#xff0c;当然&#xff0c;if…

13.前端--CSS-盒子模型

1.盒子模型的组成 CSS 盒子模型本质上是一个盒子&#xff0c;封装周围的 HTML 元素&#xff0c;它包括&#xff1a;边框、外边距、内边距、和 实际内容 2.边框&#xff08;border&#xff09; 2.1 边框的使用 1、border设置元素的边框。边框有三部分组成:边框宽度(粗细) 边框…

国网四川宜宾供电公司:基于“RPA+AI”融合技术的电网设备隐患缺陷智能化识别应用

推荐单位&#xff1a;国网四川省电力公司宜宾供电公司 本文作者&#xff1a;杨鑫、唐龙、钟睿、李小航、孙雪冬 摘 要&#xff1a;为推进电力企业生产业务数字化转型&#xff0c;提高基层班组数字化运维水平。本文通过一线班组对变电站视频巡视、设备故障判断应用场景需求分析…

C++-内存管理(1)

1. C/C内存分布 首先我们需要知道&#xff0c;在C中的内存分为5个区。 1. 栈 又叫堆栈 -- 非静态局部变量 / 函数参数 / 返回值等等&#xff0c;栈是向下增长的。 2. 内存映射段 是高效的 I/O 映射方式&#xff0c;用于装载一个共享的动态内存库。用户可使用系统接口 创建…

【2023地理设计组一等奖】基于GIS的桥梁隧道三维建模与可视化

作品介绍 1 设计背景和意义 随着我国基础建设规模不断扩大和深入,构建桥梁可视化管理模型,全面推动智慧桥梁,已成为现代隧道桥梁建设行业的发展趋势。传统的桥梁建模工作需要复杂的算法设计并需要熟练编程实践技能,实现周期长。开发自主知识版权的桥梁建模软件系统或专用插…

在线mockjson

在线mockjson体验地址 在调一个问题的时候&#xff0c;但是问题的数据可能并不能随着想到的场景就变化&#xff0c;譬如说又个数组长度的情况&#xff0c;可能默认的情况下是返回4个元素&#xff0c;但是想要返回为空的时候&#xff0c;如果联系服务给改一下&#xff0c;那么流…

防火墙知识普及详解,使用TOR Router把TOR作为默认网关,增加隐私/匿名性

防火墙知识普及详解,使用TOR Router把TOR作为默认网关,增加隐私/匿名性。 #################### 免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本人及开发者…

Abp 从空白WebApplication开始

开发环境&#xff1a;VS2022、.NET6 1、创建项目&#xff1a;BasicAspNetCoreApplication 2、NuGet添加&#xff1a;Volo.Abp.AspNetCore.Mvc和Volo.Abp.Autofac&#xff0c;如下图所示&#xff1a; 3、开始写代码&#xff0c;目录如下图所示&#xff1a; 3.1、添加启动模块Ap…

使用make_grid多批次显示网格图像(使用CIFAR数据集介绍)

背景介绍 在机器学习的训练数据集中&#xff0c;我们经常使用多批次的训练来实现更好的训练效果&#xff0c;具体到cv领域&#xff0c;我们的训练数据集通常是[B,C,W,H]格式&#xff0c;其中&#xff0c;B是每个训练批次的大小&#xff0c;C是图片的通道数&#xff0c;如果是1…

接口请求,上传文件报500异常

异常响应 {"timestamp": "2024-01-29T06:39:28.82000:00","status": 500,"error": "Internal Server Error","path": "/test/upload" }服务端日志 服务端无日志打印 分析方向 nginx配置 nginx配置…

如何多个excel中的数据分发到多个excel中去

这个问题之前有一个文章我写了这个方法&#xff0c;但是后来发现效率太低了&#xff0c;于是再次更新一下对应的技术方案&#xff0c;提速5000倍。 一下代码主要实现的功能&#xff1a; 我有5000多个excel文件&#xff0c;每个文件是一只股票从上市至今的日K交易数据&#xff0…

Python网络拓扑库之mininet使用详解

概要 网络工程师、研究人员和开发人员需要进行各种网络实验和测试&#xff0c;以评估网络应用和协议的性能&#xff0c;以及解决网络问题。Python Mininet是一个功能强大的工具&#xff0c;它允许用户创建、配置和仿真复杂的网络拓扑&#xff0c;以满足各种实际应用场景。本文…

计算机二级Python选择题考点——Python语言程序设计Ⅰ

在Python中&#xff0c;变量名的命名规则:以字母或下划线开头&#xff0c;后面跟字母、下划线和数字&#xff0c;不能以数字开头。在Python语言中&#xff0c;可以作为源文件后缀名的是py。chr(x)和ord(x)函数用于在单字符和Unicode编码值之间进行转换。Python语言中用来表示代…

运行yolo v8 YOLOv8-CPP-Inference C++部署遇到的问题

环境&#xff1a; openCv:4.8.0 torch: 2.0.0 cuda:cuda_11.7.r11.7 遇到问题1&#xff1a; (tools) rogi7:~/my_file/obj/ultralytics/examples/YOLOv8-CPP-Inference/build$ ./Yolov8CPPInference Running on CUDA [ WARN:00.039] global net_impl.cpp:178 setUpNet DNN mo…

Java 面向对象进阶 01(黑马)

static案例代码&#xff1a; 代码&#xff1a; public class Student {private String gender;private String name;private int age;public static String teacherName ;public Student() {}public Student(String gender, String name, int age) {this.gender gender;this.…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--大模型、扩散模型、视觉语言导航

专属领域论文订阅 VX 关注{晓理紫}&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 如果你感觉对你有所帮助&#xff0c;请关注我&#xff0c;每日准时为你推送最新论文。 为了答谢各位网友的支持&#xff0c;从今日起免费…

费一凡:土木博士的自我救赎之道 | 提升之路系列(五)

导读 为了发挥清华大学多学科优势&#xff0c;搭建跨学科交叉融合平台&#xff0c;创新跨学科交叉培养模式&#xff0c;培养具有大数据思维和应用创新的“π”型人才&#xff0c;由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

Linux true/false区分

bash的数值代表和其它代表相反&#xff1a;0表示true&#xff1b;非0代表false。 #!/bin/sh PIDFILE"pid"# truenginx进程运行 falsenginx进程未运行 checkRunning(){# -f true表示普通文件if [ -f "$PIDFILE" ]; then# -z 字符串长度为0trueif [ -z &qu…

时序数据库 Tdengine 执行命令能够查看执行的sql语句

curl是 访问6041端口&#xff0c;在windows系统里没有linux里的curl命令&#xff0c;需要用别的工具实现。我在cmd里是访问6030端口 第一步 在安装是时序数据库的服务器上也就是数据库服务端 进入命令窗口 执行 taos 第二步 执行 show queries\G;