def generate_model(class_num): models_folder = "models" optimizer = 'rmsprop', {'steprate': 0.0001, 'momentum': 0.9, 'decay': 0.9, 'step_adapt': False} feature_size = len(testing_dataset.tfidf.vocabulary_) num_examples = 200 batch_size = num_examples max_iter = 3000 m = GeneralizedLinearSparseModel(feature_size, 1, out_transfer='sigmoid', loss='fmeasure', optimizer=optimizer, batch_size=batch_size, max_iter=max_iter, num_examples=num_examples) weight_decay = ((m.parameters.in_to_out ** 2).sum()) weight_decay /= m.exprs['inpt'].shape[0] m.exprs['true_loss'] = m.exprs['loss'] c_wd = 0.001 m.exprs['loss'] += c_wd * weight_decay parameters_file = os.path.join(models_folder, "class%d.npy" % class_num) m.parameters.data = np.load(parameters_file) return m
def run(self): models_folder = 'models' num_examples = 1000 batch_size = num_examples max_iter = 700 actual_time = time.time() new_time = time.time() print "Time spent in transforming the training dataset: "+str(new_time-actual_time) actual_time = new_time VX, VZ = self.get_validation_data() new_time = time.time() print "Time spent in transforming the validation dataset: "+str(new_time-actual_time) stop = climin.stops.any_([ climin.stops.after_n_iterations(max_iter), ]) pause = climin.stops.modulo_n_iterations(10) optimizer = 'rmsprop', {'steprate': 0.01, 'momentum': 0.9, 'decay': 0.9, 'step_adapt': 0.001} m = GeneralizedLinearSparseModel(self.feature_size, 1, out_transfer='sigmoid', loss='fmeasure', optimizer=optimizer, batch_size=batch_size, max_iter=max_iter, num_examples=num_examples) v_losses = [] weight_decay = ((m.parameters.in_to_out ** 2).sum()) weight_decay /= m.exprs['inpt'].shape[0] m.exprs['true_loss'] = m.exprs['loss'] c_wd = 0.001 m.exprs['loss'] = m.exprs['loss'] + c_wd * weight_decay # Set up a nice printout. keys = '#', 'val loss' max_len = max(len(i) for i in keys) header = ' '.join(i.ljust(max_len) for i in keys) print header print '-' * len(header) bp = None for i, info in enumerate(m.powerfit(self.fit_data, (VX, VZ), stop, pause)): v_losses.append(info['val_loss']) bp = info['best_pars'] row = '%i' % i, '%.6f' % (1-info['val_loss']) print ' '.join(i.ljust(max_len) for i in row) np.save(os.path.join(models_folder, 'class%d' % self.class_num), bp)