case 'conv'
res(i+1).x = vl_nnconv(res(i).x, l.weights{1}, l.weights{2}, ...
'pad', l.pad, ...
'stride', l.stride, ...
'dilate', l.dilate, ...
l.opts{:}, ...
cudnn{:}) ;
case 'convt'
res(i+1).x = vl_nnconvt(res(i).x, l.weights{1}, l.weights{2}, ...
'crop', l.crop, ...
'upsample', l.upsample, ...
'numGroups', l.numGroups, ...
l.opts{:}, ...
cudnn{:}) ;
case 'pool'
res(i+1).x = vl_nnpool(res(i).x, l.pool, ...
'pad', l.pad, 'stride', l.stride, ...
'method', l.method, ...
l.opts{:}, ...
cudnn{:}) ;
case {'normalize', 'lrn'}
res(i+1).x = vl_nnnormalize(res(i).x, l.param) ;
case 'softmax'
res(i+1).x = vl_nnsoftmax(res(i).x) ;
case 'loss'
res(i+1).x = vl_nnloss(res(i).x, l.class) ;
case 'softmaxloss'
res(i+1).x = vl_nnsoftmaxloss(res(i).x, l.class) ;
case 'relu'
if l.leak > 0, leak = {'leak', l.leak} ; else leak = {} ; end
res(i+1).x = vl_nnrelu(res(i).x,[],leak{:}) ;
case 'sigmoid'
res(i+1).x = vl_nnsigmoid(res(i).x) ;
case 'noffset'
res(i+1).x = vl_nnnoffset(res(i).x, l.param) ;
case 'spnorm'
res(i+1).x = vl_nnspnorm(res(i).x, l.param) ;
case 'dropout'
if testMode
res(i+1).x = res(i).x ;
else
[res(i+1).x, res(i+1).aux] = vl_nndropout(res(i).x, 'rate', l.rate) ;
end
case 'bnorm'
if testMode
res(i+1).x = vl_nnbnorm(res(i).x, l.weights{1}, l.weights{2}, ...
'moments', l.weights{3}, ...
'epsilon', l.epsilon, ...
bnormCudnn{:}) ;
else
res(i+1).x = vl_nnbnorm(res(i).x, l.weights{1}, l.weights{2}, ...
'epsilon', l.epsilon, ...
bnormCudnn{:}) ;
end
case 'pdist'
res(i+1).x = vl_nnpdist(res(i).x, l.class, l.p, ...
'noRoot', l.noRoot, ...
'epsilon', l.epsilon, ...
'aggregate', l.aggregate, ...
'instanceWeights', l.instanceWeights) ;
case 'custom'
res(i+1) = l.forward(l, res(i), res(i+1)) ;
matconvnet源代码:skipForward
最新推荐文章于 2022-11-24 18:18:29 发布