|
classdef Solver < handle |
|
|
|
|
|
properties (Access = private) |
|
hSolver_self |
|
attributes |
|
|
|
|
|
|
|
end |
|
properties (SetAccess = private) |
|
net |
|
test_nets |
|
end |
|
|
|
methods |
|
function self = Solver(varargin) |
|
|
|
if ~(nargin == 1 && isstruct(varargin{1})) |
|
|
|
self = caffe.get_solver(varargin{:}); |
|
return |
|
end |
|
|
|
hSolver_solver = varargin{1}; |
|
CHECK(is_valid_handle(hSolver_solver), 'invalid Solver handle'); |
|
|
|
|
|
self.hSolver_self = hSolver_solver; |
|
self.attributes = caffe_('solver_get_attr', self.hSolver_self); |
|
|
|
|
|
self.net = caffe.Net(self.attributes.hNet_net); |
|
self.test_nets = caffe.Net.empty(); |
|
for n = 1:length(self.attributes.hNet_test_nets) |
|
self.test_nets(n) = caffe.Net(self.attributes.hNet_test_nets(n)); |
|
end |
|
end |
|
function delete (self) |
|
caffe_('delete_solver', self.hSolver_self); |
|
end |
|
function iter = iter(self) |
|
iter = caffe_('solver_get_iter', self.hSolver_self); |
|
end |
|
function restore(self, snapshot_filename) |
|
CHECK(ischar(snapshot_filename), 'snapshot_filename must be a string'); |
|
CHECK_FILE_EXIST(snapshot_filename); |
|
caffe_('solver_restore', self.hSolver_self, snapshot_filename); |
|
end |
|
function solve(self) |
|
caffe_('solver_solve', self.hSolver_self); |
|
end |
|
function step(self, iters) |
|
CHECK(isscalar(iters) && iters > 0, 'iters must be positive integer'); |
|
iters = double(iters); |
|
caffe_('solver_step', self.hSolver_self, iters); |
|
end |
|
end |
|
end |
|
|