重塑函数输出大小未知
Reshape function output size is unknown
我正在使用 Matlab coder 将一些 .m 文件编译成 C 静态库。在下面的函数中,我收到以下错误:
function net = mlpunpak(net, w)
nin = net.nin;
nhidden = net.nhidden;
nout = net.nout;
mark1 = nin*nhidden;
net.w1 = reshape(w(1:mark1), nin, nhidden); % Error1 ***
mark2 = mark1 + nhidden;
net.b1 = reshape(w(mark1 + 1: mark2), 1, nhidden); % Error2 ***
mark3 = mark2 + nhidden*nout;
net.w2 = reshape(w(mark2 + 1: mark3), nhidden, nout);% Error3 ***
mark4 = mark3 + nout;
net.b2 = reshape(w(mark3 + 1: mark4), 1, nout); % Error4 ***
Error1: Dimension 1 is fixed on the left-hand side but varies on the
right ([10 x 8] ~= [:? x :?]). Error2: Dimension 1 is fixed on the
left-hand side but varies on the right ([8 x 1] ~= [:? x :?]).
Error3: Dimension 1 is fixed on the left-hand side but varies on the
right ([8 x 1] ~= [:? x :?]). Error4: Dimension 2 is fixed on the
left-hand side but varies on the right ([1 x 1] ~= [1 x :?]).
变量的值分别是nin=10, nhidden=8, nout=1 并且此函数会覆盖 net 的字段。非常感谢任何帮助。
我认为您在某处为字段 w1, b1, w2, b2
指定了固定尺寸。在这种情况下,您使用 variable-size array
作为 reshape
的输入,这会导致问题。看看 this.
更新:好的,我想我解决了错误。在 Matlab 编码器的概述选项卡中,我尝试将字段定义为具有 unbounded
维度的双精度矩阵。哎呀,Code generation successful: View report
:-)
顺便说一句,在错误2,我认为这是你的错,因为reshape
这里的输出应该是1x8
,你得自己检查一下你的算法。
我正在使用 Matlab coder 将一些 .m 文件编译成 C 静态库。在下面的函数中,我收到以下错误:
function net = mlpunpak(net, w)
nin = net.nin;
nhidden = net.nhidden;
nout = net.nout;
mark1 = nin*nhidden;
net.w1 = reshape(w(1:mark1), nin, nhidden); % Error1 ***
mark2 = mark1 + nhidden;
net.b1 = reshape(w(mark1 + 1: mark2), 1, nhidden); % Error2 ***
mark3 = mark2 + nhidden*nout;
net.w2 = reshape(w(mark2 + 1: mark3), nhidden, nout);% Error3 ***
mark4 = mark3 + nout;
net.b2 = reshape(w(mark3 + 1: mark4), 1, nout); % Error4 ***
Error1: Dimension 1 is fixed on the left-hand side but varies on the right ([10 x 8] ~= [:? x :?]). Error2: Dimension 1 is fixed on the left-hand side but varies on the right ([8 x 1] ~= [:? x :?]). Error3: Dimension 1 is fixed on the left-hand side but varies on the right ([8 x 1] ~= [:? x :?]). Error4: Dimension 2 is fixed on the left-hand side but varies on the right ([1 x 1] ~= [1 x :?]).
变量的值分别是nin=10, nhidden=8, nout=1 并且此函数会覆盖 net 的字段。非常感谢任何帮助。
我认为您在某处为字段 w1, b1, w2, b2
指定了固定尺寸。在这种情况下,您使用 variable-size array
作为 reshape
的输入,这会导致问题。看看 this.
更新:好的,我想我解决了错误。在 Matlab 编码器的概述选项卡中,我尝试将字段定义为具有 unbounded
维度的双精度矩阵。哎呀,Code generation successful: View report
:-)
顺便说一句,在错误2,我认为这是你的错,因为reshape
这里的输出应该是1x8
,你得自己检查一下你的算法。