В настоящее время я разрабатываю TPGMM на основе работы Салинона (https://calinon.ch/papers/Calinon-JIST2015.pdf). Я имею дело с большими матричными операциями с использованием CuPy, как показано в коде ниже. Однако у меня возникли проблемы с векторизацией вложенных циклов for в функции EM, чтобы сделать ее более эффективной. Существуют ли какие-либо библиотеки или алгоритмы для такого рода векторизации?
Код прикреплен здесь
# nbGauss - integer
# nbData - integer
# nbFrames - integer
# nbDim - integer
# nbMinSteps,nbMaxSteps,maxDiffLL,diagRegFact,updateComp = integers
# tpTrajs - nbData x nbDim x nbFrames numpy array
# Mu_tp_init - nbDim x nbFrames x nbGauss numpy array
# Sigma_tp_init - nbDim x nbDim x nbFrames x nbGauss numpy array
# priors_init - nbGauss x 1 numpy array
def fit_em_cupy(nbFrames,nbDim,nbGauss,priors_init,Mu_tp_init,Sigma_tp_init,nbMinSteps,nbMaxSteps,maxDiffLL,diagRegFact,updateComp,tpTrajs):
"""
Fit the data into the TPGMM model
nbMinSteps:min number of allowed iterations
nbMaxSteps:max number of allowed iterations
maxDiffL:Likelihood increase threshold to stop the algorithm
diagRegFact:optional regularization
updateComp:flag to update prior,sigma and mu
"""
nbData = tpTrajs.shape[0]
LL = []
print("Using CuPy")
# convert to CuPy
tpTrajs = cp.asarray(tpTrajs)
priors_fitted = cp.asarray(priors_init)
Mu_tp_fitted = cp.asarray(Mu_tp_init)
Sigma_tp_fitted = cp.asarray(Sigma_tp_init)
for iter in tqdm(range(nbMaxSteps)):
import time
now = time.time()
Lik,priors_fitted,Mu_tp_fitted,Sigma_tp_fitted = EM(nbGauss,nbData,nbDim,nbFrames,tpTrajs,Mu_tp_fitted,Sigma_tp_fitted,priors_fitted,diagRegFact)
# compute Average Log-likelihood to estimate convergence
print(f"\nLoop Finished {time.time()-now}")
Lik_CPU = Lik.get()
curLL = np.sum(np.log(np.sum(Lik_CPU,0))) / Lik_CPU.shape[1]
LL.append(curLL)
if iter>nbMinSteps and ((LL[iter]-LL[iter-1])
Подробнее здесь: https://stackoverflow.com/questions/792 ... ure-models
Оптимизация кода для циклов For в моделях гауссовой смеси, параметризованных задачами ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как заставить все термины в 1-D Гауссовой модели смеси иметь такое же среднее значение?
Anonymous » » в форуме Python - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как заставить все термины в 1-D Гауссовой модели смеси иметь такое же среднее значение?
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-