www.gusucode.com > nnet 工具箱 matlab 源码程序 > nnet/nnderivative/+nnMex/codeHints.m
function hints = codeHints(hints) % Copyright 2012-2014 The MathWorks, Inc. B = hints.batch; switch(hints.precision) case 'single', sizeofPRECISION = 4; case 'double', sizeofPRECISION = 8; end sizeofPointer = 8; % YY Temporary Memory Size if hints.doProcessInputs P_size = sizeofPRECISION * hints.seriesInputProcElements * (hints.numInputDelays + hints.TS); Pc_size = sizeofPointer * hints.numInputs * (hints.numInputDelays + hints.TS); else P_size = 0; Pc_size = 0; end Xd_size = sizeofPRECISION * hints.maxDelayedElements * B; Z_size = sizeofPRECISION * hints.maxLayerSize * B; N_size = sizeofPRECISION * hints.maxLayerSize * B; Ac_size = sizeofPRECISION * hints.numLayerElements * (hints.numLayerDelays + 1) * B; Ap_size = sizeofPRECISION * hints.maxOutProcXElements * B; hints.tempSizeYY = P_size + Pc_size + Xd_size + Z_size + N_size + Ac_size + Ap_size; % PERFS Temporary Memory Size if hints.doProcessInputs P_size = sizeofPRECISION * hints.seriesInputProcElements * (hints.numInputDelays + hints.TS); Pc_size = sizeofPointer * hints.numInputs * (hints.numInputDelays + hints.TS); else P_size = 0; Pc_size = 0; end Xd_size = sizeofPRECISION * hints.maxDelayedElements * B; Z_size = sizeofPRECISION * hints.maxLayerSize * B; N_size = sizeofPRECISION * hints.maxLayerSize * B; Ac_size = sizeofPRECISION * hints.numLayerElements * (hints.numLayerDelays + 1) * B; Ap_size = sizeofPRECISION * hints.maxOutProcXElements * B; E_size = sizeofPRECISION * hints.maxOutputSize * B; PERF_size = sizeofPRECISION * hints.maxOutputSize * B; hints.tempSizePERFS = P_size + Pc_size + Xd_size + Z_size + N_size + Ac_size + Ap_size + E_size + PERF_size; % BG Temporary Memory Size if hints.doProcessInputs P_size = sizeofPRECISION * hints.seriesInputProcElements * (hints.numInputDelays + hints.TS) * B; Pc_size = sizeofPointer * hints.numInputs*(hints.numInputDelays + hints.TS) * B; else P_size = 0; Pc_size = 0; end Xd_size = sizeofPRECISION * hints.maxDelayedElements * B; Z_size = sizeofPRECISION * hints.totalZSize * hints.TS * B; N_size = sizeofPRECISION * hints.numLayerElements * hints.TS * B; Ac_size = sizeofPRECISION * hints.numLayerElements * (hints.numLayerDelays + hints.TS) * B; Ap_size = sizeofPRECISION * hints.maxOutProcXElements * B; E_size = sizeofPRECISION * hints.maxOutputSize * B; PERF_size = sizeofPRECISION * hints.maxOutputSize * B; dY_size = sizeofPRECISION * hints.maxOutputSize * B; dYp_size = sizeofPRECISION * hints.maxOutProcYElements * B; dAi_size = sizeofPRECISION * hints.numLayerElements * hints.numLayerDelays * B; dA_size = sizeofPRECISION * hints.numLayerElements * hints.TS * B; dN_size = sizeofPRECISION * hints.numLayerElements * B; dZ_size = sizeofPRECISION * hints.maxLayerSize * B; dXd_size = sizeofPRECISION * hints.maxDelayedElements * B; hints.tempSizeBG = P_size + Pc_size + Xd_size + Z_size + N_size + Ac_size + Ap_size + E_size + PERF_size ... + dY_size + dYp_size + dAi_size + dA_size + dN_size + dZ_size + dXd_size; % backpropStaticJacobian Memory Size tempSize = 0; if hints.doProcessInputs tempSize = tempSize + hints.seriesInputProcElements * B; % Processing inputs tempSize = tempSize + hints.seriesInputProcElements * B * (hints.numInputDelays + 1); % Processed inputs end tempSize = tempSize + hints.maxDelayedElements * B; % Delayed processed inputs tempSize = tempSize + hints.totalZSize * B; % Weighted inputs and layer outputs tempSize = tempSize + hints.numLayerElements * B; % Net inputs tempSize = tempSize + hints.numLayerElements * B; % Layer outputs tempSize = tempSize + hints.maxLayerSize * B; % Errors tempSize = tempSize + hints.maxLayerSize * B; % Performances tempSize = tempSize + hints.maxOutProcXElements * B; % Processed layer outputs tempSize = tempSize + hints.maxOutputSize * B; % Output derivatives tempSize = tempSize + hints.maxOutputSize * B; % Expanded error derivatives tempSize = tempSize + hints.maxOutputSize * B; % Expanded output derivatives tempSize = tempSize + hints.maxOutProcYElements * B; % Processed layer output derivatives tempSize = tempSize + hints.numLayerElements * B; % Layer output derivatives tempSize = tempSize + hints.numLayers; % Layer output derivative flags tempSize = tempSize + hints.maxLayerSize * B; % Delayed layer output derivative tempSize = tempSize + hints.maxLayerSize * B; % Net input derivatives tempSize = tempSize + hints.maxLayerSize * B; % Weighted input derivatives tempSize = tempSize + hints.numLearningWeightElements * B; % J = dE/dWB hints.tempSizeBackpropStaticJacobian = sizeofPRECISION * ceil(tempSize/8)*8; % FJ Temporary Memory Size if hints.doProcessInputs P_size = sizeofPRECISION * hints.seriesInputProcElements*(hints.numInputDelays + hints.TS)*B; Pc_size = sizeofPointer * hints.numInputs*(hints.numInputDelays + hints.TS)*B; else P_size = 0; Pc_size = 0; end Xd_size = sizeofPRECISION*hints.maxDelayedElements*B; Z_size = sizeofPRECISION*hints.maxLayerZSize*B; N_size = sizeofPRECISION*hints.maxLayerSize*B; Ac_size = sizeofPRECISION*hints.numLayerElements*(hints.numLayerDelays+1)*B; Ap_size = sizeofPRECISION*hints.maxOutProcXElements*B; E_size = sizeofPRECISION*hints.maxOutputSize*B; PERF_size = sizeofPRECISION*hints.maxOutputSize*B; dXd_size = sizeofPRECISION*hints.maxDelayedElements*hints.numLearningWeightElements*B; dIWZ_size = sizeofPRECISION*hints.maxIWSizeByS*B; dLWZ_size = sizeofPRECISION*hints.maxNumLWByS*hints.numLearningWeightElements*B; dN_size = sizeofPRECISION*hints.maxLayerSize*hints.numLearningWeightElements*B; dA_size = sizeofPRECISION*hints.numLayerElements*hints.numLearningWeightElements*(hints.numLayerDelays+1)*B; dAp_size = sizeofPRECISION*hints.maxOutProcXElements*hints.numLearningWeightElements*B; hints.tempSizeFJ= P_size + Pc_size + Xd_size + Z_size + N_size + Ac_size + Ap_size + E_size + PERF_size ... + dXd_size + dIWZ_size + dLWZ_size + dN_size + dA_size + dAp_size;