Backend
Via the concept of a backend we can abstract over the platform we will execute
or optimize a network on. The construction of a backend is trivial. The backend
is passed to the Solver
, (one backend for network
and one for the
objectve
). The Solver than executes all operations on the provided backend.
let backend = ::std::rc::Rc::new(Backend::<Cuda>::default().unwrap());
// set up solver
let mut solver_cfg = SolverConfig { minibatch_size: batch_size, base_lr: learning_rate, momentum: momentum, .. SolverConfig::default() };
solver_cfg.network = LayerConfig::new("network", net_cfg);
solver_cfg.objective = LayerConfig::new("classifier", classifier_cfg);
let mut solver = Solver::from_config(backend.clone(), backend.clone(), &solver_cfg);
The backend is a concept of Coaster, to which you can refer for now, until this chapter becomes more fleshed out.