eval.m
函数定义:
function eval(obj, inputs, derOutputs, stopLayer)
用法一:执行前向传播
eval(obj, inputs)
,使用指定的inputs
执行DagNN
,在整个网络上执行前向传播,计算所有变量的值,计算结果可以通过obj.vars(outputIndex)
获得。
用法二:执行前向传播+反向传播
eval(obj, inputs, derOutputs)
,从inputs
开始执行前向传播,完成后再从derOutputs
执行反向传播。
obj
是DagNN对象
inputs
是一个元胞数组:{'inputName', inputValue, ...}
derOutputs
是一个元胞数组:{'outputName', outputDerValue, ...}
准备工作
参数检查
确保inputs和derOutputs一定是cell数组类型
obj.computingDerivative = nargin > 2 && ~isempty(derOutputs) ;
if ~iscell(inputs), error('INPUTS is not a cell array.') ; end
if obj.computingDerivative && ~iscell(derOutputs), error('DEROUTPUTS is not a cell array.') ; end
if nargin < 4
stopLayer = [];
end
前向传播
输入赋值
将输入inputs的值赋给对应的变量。
for i = 1:2:numel(inputs)
v = obj.getVarIndex(inputs{
i}) ;