?? calcjx.c
字號:
mclVv(i, "i")))) {
/*
* gA{i,ts} = gE{i}; %%% NO TS REQUIRED
*/
mlfIndexAssign(
&gA,
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts"),
mlfIndexRef(mclVv(gE, "gE"), "{?}", mclVv(i, "i")));
/*
* else
*/
} else {
/*
* gA{i,ts} = zeros(net.layers{i}.size,Q);
*/
mlfIndexAssign(
&gA,
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts"),
mlfZeros(
mlfIndexRef(
mclVa(net, "net"), ".layers{?}.size", mclVv(i, "i")),
mclVa(Q, "Q"),
NULL));
/*
* end
*/
}
/*
*
* % ...through Layer Weights
* for k=LCT{i}
*/
{
mclForLoopIterator viter__3;
for (mclForStart(
&viter__3,
mlfIndexRef(mclVv(LCT, "LCT"), "{?}", mclVv(i, "i")),
NULL,
NULL);
mclForNext(&viter__3, &k);
) {
/*
* if (any(net.layerWeights{k,i}.delays == 0)) % only zero delay paths
*/
if (mlfTobool(
mlfAny(
mclFeval(
mclValueVarargout(),
mlxEq,
mlfIndexRef(
mclVa(net, "net"),
".layerWeights{?,?}.delays",
mclVv(k, "k"),
mclVv(i, "i")),
_mxarray1_,
NULL),
NULL))) {
/*
* ZeroDelayW = net.LW{k,i}(:,1:net.layers{i}.size);
*/
mlfAssign(
&ZeroDelayW,
mlfIndexRef(
mclVa(net, "net"),
".LW{?,?}(?,?)",
mclVv(k, "k"),
mclVv(i, "i"),
mlfCreateColonIndex(),
mclFeval(
mclValueVarargout(),
mlxColon,
_mxarray0_,
mlfIndexRef(
mclVa(net, "net"),
".layers{?}.size",
mclVv(i, "i")),
NULL)));
/*
* gA{i,ts} = gA{i,ts} + ...
*/
mlfIndexAssign(
&gA,
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts"),
mclFeval(
mclValueVarargout(),
mlxPlus,
mlfIndexRef(
mclVv(gA, "gA"),
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts")),
mclFeval(
mclValueVarargout(),
mlxMtimes,
mlfCtranspose(
mlfFeval(
mclValueVarargout(),
mlfIndexRef(
mclVv(dLWF, "dLWF"),
"{?,?}",
mclVv(k, "k"),
mclVv(i, "i")),
_mxarray4_,
mclVv(ZeroDelayW, "ZeroDelayW"),
mlfIndexRef(
mclVa(Ac, "Ac"),
"{?,?}",
mclVv(i, "i"),
mclPlus(
mclVv(ts, "ts"),
mclVv(
numLayerDelays, "numLayerDelays"))),
mlfIndexRef(
mclVa(LWZ, "LWZ"),
"{?,?,?}",
mclVv(k, "k"),
mclVv(i, "i"),
mclVv(ts, "ts")),
NULL)),
mlfIndexRef(
mclVv(gLWZ, "gLWZ"),
"{?,?,?}",
mclVv(k, "k"),
mclVv(i, "i"),
mclVv(ts, "ts")),
NULL),
NULL));
/*
* feval(dLWF{k,i},'p',ZeroDelayW,Ac{i,ts+numLayerDelays},LWZ{k,i,ts})' * ...
* gLWZ{k,i,ts};
* end
*/
}
/*
* end
*/
}
mclDestroyForLoopIterator(viter__3);
}
/*
*
* % ...through Transfer Functions
* gN{i,ts} = feval(dTF{i},N{i,ts},Ac{i,ts+numLayerDelays}) .* gA{i,ts};
*/
mlfIndexAssign(
&gN,
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts"),
mclFeval(
mclValueVarargout(),
mlxTimes,
mlfFeval(
mclValueVarargout(),
mlfIndexRef(mclVv(dTF, "dTF"), "{?}", mclVv(i, "i")),
mlfIndexRef(
mclVa(N, "N"), "{?,?}", mclVv(i, "i"), mclVv(ts, "ts")),
mlfIndexRef(
mclVa(Ac, "Ac"),
"{?,?}",
mclVv(i, "i"),
mclPlus(
mclVv(ts, "ts"),
mclVv(numLayerDelays, "numLayerDelays"))),
NULL),
mlfIndexRef(
mclVv(gA, "gA"), "{?,?}", mclVv(i, "i"), mclVv(ts, "ts")),
NULL));
/*
*
* % ...to Bias
* if net.biasConnect(i)
*/
if (mlfTobool(
mlfIndexRef(
mclVa(net, "net"), ".biasConnect(?)", mclVv(i, "i")))) {
/*
* gBZ{i,ts} = feval(dNF{i},BZ{i},N{i,ts}) .* gN{i,ts};
*/
mlfIndexAssign(
&gBZ,
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts"),
mclFeval(
mclValueVarargout(),
mlxTimes,
mlfFeval(
mclValueVarargout(),
mlfIndexRef(mclVv(dNF, "dNF"), "{?}", mclVv(i, "i")),
mlfIndexRef(mclVa(BZ, "BZ"), "{?}", mclVv(i, "i")),
mlfIndexRef(
mclVa(N, "N"),
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts")),
NULL),
mlfIndexRef(
mclVv(gN, "gN"),
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts")),
NULL));
/*
* end
*/
}
/*
*
* % ...to Input Weights
* for j=ICF{i}
*/
{
mclForLoopIterator viter__4;
for (mclForStart(
&viter__4,
mlfIndexRef(mclVv(ICF, "ICF"), "{?}", mclVv(i, "i")),
NULL,
NULL);
mclForNext(&viter__4, &j);
) {
/*
* gIWZ{i,j,ts} = feval(dNF{i},IWZ{i,j,ts},N{i,ts}) .* gN{i,ts};
*/
mlfIndexAssign(
&gIWZ,
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mclVv(ts, "ts"),
mclFeval(
mclValueVarargout(),
mlxTimes,
mlfFeval(
mclValueVarargout(),
mlfIndexRef(
mclVv(dNF, "dNF"), "{?}", mclVv(i, "i")),
mlfIndexRef(
mclVa(IWZ, "IWZ"),
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mclVv(ts, "ts")),
mlfIndexRef(
mclVa(N, "N"),
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts")),
NULL),
mlfIndexRef(
mclVv(gN, "gN"),
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts")),
NULL));
/*
* end
*/
}
mclDestroyForLoopIterator(viter__4);
}
/*
*
* % ...to Layer Weights
* for j=LCF{i}
*/
{
mclForLoopIterator viter__5;
for (mclForStart(
&viter__5,
mlfIndexRef(mclVv(LCF, "LCF"), "{?}", mclVv(i, "i")),
NULL,
NULL);
mclForNext(&viter__5, &j);
) {
/*
* gLWZ{i,j,ts} = feval(dNF{i},LWZ{i,j,ts},N{i,ts}) .* gN{i,ts};
*/
mlfIndexAssign(
&gLWZ,
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mclVv(ts, "ts"),
mclFeval(
mclValueVarargout(),
mlxTimes,
mlfFeval(
mclValueVarargout(),
mlfIndexRef(
mclVv(dNF, "dNF"), "{?}", mclVv(i, "i")),
mlfIndexRef(
mclVa(LWZ, "LWZ"),
"{?,?,?}",
mclVv(i, "i"),
mclVv(j, "j"),
mclVv(ts, "ts")),
mlfIndexRef(
mclVa(N, "N"),
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts")),
NULL),
mlfIndexRef(
mclVv(gN, "gN"),
"{?,?}",
mclVv(i, "i"),
mclVv(ts, "ts")),
NULL));
/*
* end
*/
}
mclDestroyForLoopIterator(viter__5);
}
/*
* end
*/
}
mclDestroyForLoopIterator(viter__2);
/*
* end
*/
}
mclDestroyForLoopIterator(viter__);
}
/*
*
* % Shortcuts
* inputWeightCols = net.hint.inputWeightCols;
*/
mlfAssign(
&inputWeightCols,
mlfIndexRef(mclVa(net, "net"), ".hint.inputWeightCols"));
/*
* layerWeightCols = net.hint.layerWeightCols;
*/
mlfAssign(
&layerWeightCols,
mlfIndexRef(mclVa(net, "net"), ".hint.layerWeightCols"));
/*
*
* % Bias and Weight Gradients
* for ts=1:TS
*/
{
int v_ = mclForIntStart(1);
int e_ = mclForIntEnd(mclVa(TS, "TS"));
if (v_ > e_) {
mlfAssign(&ts, _mxarray2_);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -