开发WGAN-GP 3 d图像

7视图(30天)
Shuaibin广域网
Shuaibin广域网 2022年3月23日
嗨,我是初学者在使用MATLAB开发生成对抗网络(甘斯)。基于MATLAB WGAN-GP教程,我开发了一种WGAN-GP模型三维图像(H x W x D C)。修改后的 modelGradientsD 的功能如下所示。
函数[gradientsD, lossD lossDUnregularized、D_X D_G_Z1] = modelGradientsD (dlnetG dlnetD, dlZ, dlX,λ)
%计算训练图像的预测与D
dlYPred =前进(dlnetD dlX);
%计算预测G-generated图像与D
dlXGenerated =前进(dlnetG, dlZ);
dlYPredGenerated =前进(dlnetD dlXGenerated);
%计算D (X)和D (G (Z))
D_X =意味着(dlYPred);
D_G_Z1 =意味着(dlYPredGenerated);
%计算unregularized损失
lossDUnregularized = D_G_Z1 - D_X;
%从培训和得到插值图像生成的图像
ε=兰德([1 1 1 1大小(dlX 5)],“喜欢”dlX);
dlXInterpolated =ε。* dlX +(1 -ε)。* dlXGenerated;
dlYPredInterpolated =前进(dlnetD dlXInterpolated);
%计算梯度点球
gradientsInterpolated = dlgradient (dlXInterpolated sum (dlYPredInterpolated),“EnableHigherDerivatives”,真正的);
gradientsInterpolatedNorm =√总和gradientsInterpolated。^ 2, 1:4) + 1平台以及);
gradientPenalty =λ。*意味着((gradientsInterpolatedNorm - 1) ^ 2);
%计算梯度处罚的损失
lossD = lossDUnregularized + gradientPenalty;
%计算梯度的损失对可学的参数
gradientsD = dlgradient (lossD dlnetD.Learnables);
结束
然而,当运行程序时,弹出一个错误(如下所示)。似乎有一些错误的计算的 gradientsD ”。经过多次调试的尝试,我发现删除的 EnableHigherDerivatives 从计算的 gradientsInterpolated 可以让它。但WGAN-GP执行得很好,我有几个问题:(1)删除” EnableHigherDerivatives “会显著影响模型训练?(2)有鲁棒性问题的 dlgradient 的函数?(3)有其他解决这个错误吗?万博 尤文图斯
我真的很感激如果你能提供任何想法或建议。谢谢!
错误使用+
数组对这个操作不兼容的大小。
错误在gpuArray / internal_dlconv(57)行
扩张步伐,numGroups) +偏见;
错误在deep.internal.recording.operations.DlconvBackwardOp /向后(第88行)
ddZ2 = internal_dlconv (ddX、重量、zeroBias op.Args {:});
错误在deep.internal.recording.RecordingArray / backwardPass(第89行)
研究生= backwardTape (tm, {y}, {initialAdjoint}, x, retainData,假的,0);
错误在dlarray / dlgradient(第132行)
(校友,isTracedGrad) = backwardPass (y, xc, pvpairs {:});
错误在WGANGP_V1 > modelGradientsD(第442行)
gradientsD = dlgradient (lossD dlnetD.Learnables);
错误在deep.internal.dlfeval(第17行)
[varargout {1: nargout}] =乐趣(x {:});
错误在dlfeval(40行)
[varargout {1: nargout}] = deep.internal.dlfeval(乐趣,变长度输入宗量{:});
错误在WGANGP_V1(第226行)
[gradientsD, lossD lossDUnregularized、D_X D_G_Z1] = dlfeval (@modelGradientsD、dlnetG dlnetD, dlZ, dlX,λ);

接受的答案

神骑士
神骑士 2022年3月24日
你一定需要使用 EnableHigherOrderDerivatives 因为你是包括损失计算梯度项。没有它你的训练不会正常工作。
看起来这是一个缺陷与高阶导数和三维数据,这在R2022a是固定的。你能得到最新版本的MATLAB ?
3评论
Shuaibin广域网
Shuaibin广域网 2022年4月3日
这听起来太棒了!非常感谢你,先生。

登录置评。

更多的答案(0)

s manbetx 845


释放

R2021b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的