如何在 Python 中优化这个矩阵乘法

问题描述 投票:0回答:0

根据梯度方程,矩阵乘法由下式给出

同时需要

@
*
的地方。如果读者有兴趣,这里是代码:

# parameters
beta     =  0.98 
alpha    =  0.03
delta    =  0.1
T        =  1000
kss      =  ((1 / beta - (1 - delta)) / alpha)**(1 / (alpha - 1))
k        =  np.linspace(0.5 * kss, 1.8 * kss, T)

k_reshaped   =  k.reshape(-1, 1)
c            =  k_reshaped ** alpha + (1 - delta) * k_reshaped - k
c[c<0]       =  1e-11
c            =  np.log(c)
beta_square  =  beta**2

# multiplication
I   =  np.identity(T)
J   =  beta * I
B   =  inv(I - J)
E   =  np.ones(T)[:,None]

gB  =  2 * B @ (J * c @ E) @ (beta * I * c @ E + B @ (np.linalg.matrix_power(I - J, 2) * c @ E)).T / beta_square

代码目前演示了 1000 x 1000 的矩阵运算,是否可以对其进行优化并运行得更快?

python numpy matrix-multiplication
© www.soinside.com 2019 - 2024. All rights reserved.