dlarray and parfor gives error

Hello together,
I want to accelerate my compuations with parfor while using dlarray.
My compuation looks like this:
parfor i = 1:num_features
feature = ... some calculations ...
loss_temp(i) = mse(feature,feature_ground_truth,'DataFormat','CB')
end
loss = sum(loss_temp);
gradients = dlgradient(loss,dlnet.Learnables);
It gives me the error:
Error using dlarray/dlgradient
Value to differentiate is not traced. It must be a traced real dlarray scalar. Use dlgradient inside a function called by dlfeval to trace the variables.
Error in modelGradients (line 67)
gradients = dlgradient(loss,dlnet.Learnables);
Does this mean, dlarray information is lost during parfor calculation and it is not compatible with it?
Thanks for your help.
Edit:
There is a website Link. Do I have to use dlaccelerate somehow? Thanks.

回答 (1 件)

Roman Foell
Roman Foell 2023 年 8 月 9 日

0 投票

Thanks all,
I already got the answer:
Calculate the gradients inside the parfor loop and combine it outside.
Possible, because the gradient of a sum is the sum of the gradient summands.
Thanks.

製品

リリース

R2022b

タグ

質問済み:

2023 年 8 月 7 日

回答済み:

2023 年 8 月 9 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by