def argmax(self, w, feat_idx, training): feature_vector = self.get_features().get_feature_vector(feat_idx) label = None if training == True: label = int( RealNumber.obtain_from_generic( self.get_labels().get_label(feat_idx)).value) ypred = 0 max_score = -1e10 for c in xrange(self.n_classes): score = 0.0 for i in xrange(self.n_feats): score += w[i + self.n_feats * c] * feature_vector[i] if training == True: score += (c != label) if score > max_score: max_score = score ypred = c res = ResultSet() res.score = max_score res.psi_pred = RealVector(self.dim) res.psi_pred.zero() for i in xrange(self.n_feats): res.psi_pred[i + self.n_feats * ypred] = feature_vector[i] res.argmax = RealNumber(ypred) if training == True: res.delta = (label != ypred) res.psi_truth = RealVector(self.dim) res.psi_truth.zero() for i in xrange(self.n_feats): res.psi_truth[i + self.n_feats * label] = feature_vector[i] for i in xrange(self.n_feats): res.score -= w[i + self.n_feats * label] * feature_vector[i] return res