?? calcjx.c
字號:
} else {
/*
* for i=1:net.numLayers
* gB{i,ts} = gBZ{i,ts};
* for j=ICF{i}
* sW = feval(dIWF{i,j},'w',net.IW{i,j},PD{i,j,ts},IWZ{i,j,ts});
* gIW{i,j,ts} = reprow(gIWZ{i,j,ts},inputWeightCols(i,j)) .* ...
* reprowint(sW,net.layers{i}.size);
* end
* for j=LCF{i}
* Ad = cell2mat(Ac(j,ts+numLayerDelays-net.layerWeights{i,j}.delays)');
* sW = feval(dLWF{i,j},'w',net.LW{i,j},Ad,LWZ{i,j,ts});
* gLW{i,j,ts} = reprow(gLWZ{i,j,ts},layerWeightCols(i,j)) .* ...
* reprowint(sW,net.layers{i}.size);
* end
* end
* end
*/
for (; ; ) {
mclForLoopIterator viter__;
for (mclForStart(
&viter__,
mclFeval(
mclValueVarargout(),
mlxColon,
_mxarray0_,
mlfIndexRef(mclVa(net, "net"), ".numLayers"),
NULL),
NULL,
NULL);
mclForNext(&viter__, &i);
) {
mlfIndexAssign(
&gB,
"{?,?}",
mclVv(i, "i"),
mlfScalar(v_),
mlfIndexRef(
mclVv(gBZ, "gBZ"),
"{?,?}",
mclVv(i, "i"),
mlfScalar(v_)));
{
mclForLoopIterator viter__6;
for (mclForStart(
&viter__6,
mlfIndexRef(
mclVv(ICF, "ICF"), "{?}", mclVv(i, "i")),
NULL,
NULL);
mclForNext(&viter__6, &j);
) {
mlfAssign(
&sW,
mlfFeval(
mclValueVarargout(),
mlfIndexRef(
mclVv(dIWF, "dIWF"),
"{?,?}",
mclVv(i, "i"),
mclVv(j, "j")),
_mxarray6_,
mlfIndexRef(
mclVa(net, "net"),
".IW{?,?}",
mclVv(i, "i"),
mclVv(j, "j")),
mlfIndexRef(
mclVa(PD, "PD"),
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mlfScalar(v_)),
mlfIndexRef(
mclVa(IWZ, "IWZ"),
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mlfScalar(v_)),
NULL));
mlfIndexAssign(
&gIW,
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mlfScalar(v_),
mclTimes(
mclFeval(
mclValueVarargout(),
mlxCalcjx_reprow,
mlfIndexRef(
mclVv(gIWZ, "gIWZ"),
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mlfScalar(v_)),
mclArrayRef2(
mclVv(inputWeightCols, "inputWeightCols"),
mclVv(i, "i"),
mclVv(j, "j")),
NULL),
mclFeval(
mclValueVarargout(),
mlxCalcjx_reprowint,
mclVv(sW, "sW"),
mlfIndexRef(
mclVa(net, "net"),
".layers{?}.size",
mclVv(i, "i")),
NULL)));
}
mclDestroyForLoopIterator(viter__6);
}
{
mclForLoopIterator viter__7;
for (mclForStart(
&viter__7,
mlfIndexRef(
mclVv(LCF, "LCF"), "{?}", mclVv(i, "i")),
NULL,
NULL);
mclForNext(&viter__7, &j);
) {
mlfAssign(
&Ad,
mlfCell2mat(
mlfCtranspose(
mclArrayRef2(
mclVa(Ac, "Ac"),
mclVv(j, "j"),
mclFeval(
mclValueVarargout(),
mlxMinus,
mclPlus(
mlfScalar(v_),
mclVv(
numLayerDelays, "numLayerDelays")),
mlfIndexRef(
mclVa(net, "net"),
".layerWeights{?,?}.delays",
mclVv(i, "i"),
mclVv(j, "j")),
NULL)))));
mlfAssign(
&sW,
mlfFeval(
mclValueVarargout(),
mlfIndexRef(
mclVv(dLWF, "dLWF"),
"{?,?}",
mclVv(i, "i"),
mclVv(j, "j")),
_mxarray6_,
mlfIndexRef(
mclVa(net, "net"),
".LW{?,?}",
mclVv(i, "i"),
mclVv(j, "j")),
mclVv(Ad, "Ad"),
mlfIndexRef(
mclVa(LWZ, "LWZ"),
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mlfScalar(v_)),
NULL));
mlfIndexAssign(
&gLW,
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mlfScalar(v_),
mclTimes(
mclFeval(
mclValueVarargout(),
mlxCalcjx_reprow,
mlfIndexRef(
mclVv(gLWZ, "gLWZ"),
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mlfScalar(v_)),
mclArrayRef2(
mclVv(layerWeightCols, "layerWeightCols"),
mclVv(i, "i"),
mclVv(j, "j")),
NULL),
mclFeval(
mclValueVarargout(),
mlxCalcjx_reprowint,
mclVv(sW, "sW"),
mlfIndexRef(
mclVa(net, "net"),
".layers{?}.size",
mclVv(i, "i")),
NULL)));
}
mclDestroyForLoopIterator(viter__7);
}
}
mclDestroyForLoopIterator(viter__);
if (v_ == e_) {
break;
}
++v_;
}
mlfAssign(&ts, mlfScalar(v_));
}
}
/*
*
* % Shortcuts
* inputLearn = net.hint.inputLearn;
*/
mlfAssign(&inputLearn, mlfIndexRef(mclVa(net, "net"), ".hint.inputLearn"));
/*
* layerLearn = net.hint.layerLearn;
*/
mlfAssign(&layerLearn, mlfIndexRef(mclVa(net, "net"), ".hint.layerLearn"));
/*
* biasLearn = net.hint.biasLearn;
*/
mlfAssign(&biasLearn, mlfIndexRef(mclVa(net, "net"), ".hint.biasLearn"));
/*
* inputWeightInd = net.hint.inputWeightInd;
*/
mlfAssign(
&inputWeightInd, mlfIndexRef(mclVa(net, "net"), ".hint.inputWeightInd"));
/*
* layerWeightInd = net.hint.layerWeightInd;
*/
mlfAssign(
&layerWeightInd, mlfIndexRef(mclVa(net, "net"), ".hint.layerWeightInd"));
/*
* biasInd = net.hint.biasInd;
*/
mlfAssign(&biasInd, mlfIndexRef(mclVa(net, "net"), ".hint.biasInd"));
/*
*
* % gB{}, gIW{}, gLW{} -> jX()
* jx = zeros(net.hint.xLen,QS*TS);
*/
mlfAssign(
&jx,
mlfZeros(
mlfIndexRef(mclVa(net, "net"), ".hint.xLen"),
mclMtimes(mclVv(QS, "QS"), mclVa(TS, "TS")),
NULL));
/*
* for i=1:net.numLayers
*/
{
mclForLoopIterator viter__;
for (mclForStart(
&viter__,
mclFeval(
mclValueVarargout(),
mlxColon,
_mxarray0_,
mlfIndexRef(mclVa(net, "net"), ".numLayers"),
NULL),
NULL,
NULL);
mclForNext(&viter__, &i);
) {
mclForLoopIterator viter__8;
/*
* for j=find(inputLearn(i,:))
*/
for (mclForStart(
&viter__8,
mlfFind(
NULL,
NULL,
mclArrayRef2(
mclVv(inputLearn, "inputLearn"),
mclVv(i, "i"),
mlfCreateColonIndex())),
NULL,
NULL);
mclForNext(&viter__8, &j);
) {
/*
* jx(inputWeightInd{i,j},:) = [gIW{i,j,:}];
*/
mclArrayAssign2(
&jx,
mlfHorzcat(
mlfIndexRef(
mclVv(gIW, "gIW"),
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mlfCreateColonIndex()),
NULL),
mlfIndexRef(
mclVv(inputWeightInd, "inputWeightInd"),
"{?,?}",
mclVv(i, "i"),
mclVv(j, "j")),
mlfCreateColonIndex());
/*
* end
*/
}
mclDestroyForLoopIterator(viter__8);
/*
* for j=find(layerLearn(i,:))
*/
{
mclForLoopIterator viter__9;
for (mclForStart(
&viter__9,
mlfFind(
NULL,
NULL,
mclArrayRef2(
mclVv(layerLearn, "layerLearn"),
mclVv(i, "i"),
mlfCreateColonIndex())),
NULL,
NULL);
mclForNext(&viter__9, &j);
) {
/*
* jx(layerWeightInd{i,j},:) = [gLW{i,j,:}];
*/
mclArrayAssign2(
&jx,
mlfHorzcat(
mlfIndexRef(
mclVv(gLW, "gLW"),
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mlfCreateColonIndex()),
NULL),
mlfIndexRef(
mclVv(layerWeightInd, "layerWeightInd"),
"{?,?}",
mclVv(i, "i"),
mclVv(j, "j")),
mlfCreateColonIndex());
/*
* end
*/
}
mclDestroyForLoopIterator(viter__9);
}
/*
* if biasLearn(i)
*/
if (mlfTobool(
mclArrayRef1(mclVv(biasLearn, "bi
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -