def train_gradient_descent(self, **kwargs): """ f_info will be overwritten here. """ self._prepare_for_training() self.load_train_target() if 'f_info' not in kwargs: kwargs['f_info'] = self._f_info_decorated if 'f_exe' not in kwargs: kwargs['f_exe'] = self._f_exe_decorated self._general_option_processing(kwargs) self._process_options(kwargs) self.print_options(kwargs) opt.fmin_gradient_descent(self.f_and_fprime, self.init_w, **kwargs) return self._f_post_training_decorated()
def test_gradient_descent(weight_decay=0): print 'Testing gradient descent weight_decay=%g' % weight_decay def f(x): return ((x - 1)**2).sum() / 2.0, x - 1 def f_info(x): return 'x=%s' % str(x) x0 = np.array([2, 0], dtype=np.float) x_opt = opt.fmin_gradient_descent(f, x0, learn_rate=0.6, momentum=0.0, weight_decay=weight_decay, learn_rate_drop_iters=5, adagrad_start_iter=1, max_iters=20, iprint=1, f_info=f_info, verbose=True) x_star = np.ones(2, dtype=np.float) / (1 + weight_decay) success = test_vec_pair(x_star, 'x_star', x_opt, 'x_opt ') print '' return success
def train_sgd(self, **kwargs): """ f_info will be overwritten here. """ self.print_options(kwargs) self._prepare_for_training() if 'minibatch_size' in kwargs: minibatch_size = kwargs['minibatch_size'] del kwargs['minibatch_size'] else: minibatch_size = 100 self.create_minibatch_generator(minibatch_size) if 'f_info' not in kwargs: kwargs['f_info'] = self._f_info_decorated if 'f_exe' not in kwargs: kwargs['f_exe'] = self._f_exe_decorated self._general_option_processing(kwargs) self._process_options(kwargs) opt.fmin_gradient_descent(self.f_and_fprime_minibatch, self.init_w, **kwargs) return self._f_post_training_decorated()