Yeah, that was the one I used.  I didn't look at EdgeFeatureGraph yet.


On Wed, Jul 31, 2013 at 10:16 AM, Andreas Mueller
<notifications@github.com>wrote:

> In pystruct/models/graph_crf.py:
>
> > @@ -17,7 +13,24 @@ class GraphCRF(CRF):
> >
> >      Labels, Y, are given as an interable of n_examples. Each label, y, in Y
> >      is given by a numpy array of shape (n_nodes,).
> > -
> > +
> > +    There are n_states * n_features parameters for unary potentials. For edge
> > +    potential parameters, there are n_state * n_states permutations, i.e.
> > +
> > +            state_1 state_2
> > +    state_1       1       2
> > +    state_2       2       3
> > +
> > +    However, since edge potentials are symmetric, so we only need to keep track
> > +    of the lower triangle, or n_states * (n_states + 1) / 2 parameters for
> > +    edge potentials.
> > +
> > +    The fitted parameters of this model will be returned as an array with
> > +    the first n_states * n_features elements representing the unary potentials
>
> So you used EdgeTypeGraphCRF? I wanted to remove that in favour of
> EdgeFeatureGraphCRF. You could have features that one-hot encode if it is
> f1, f2 or f3.
>
> —
> Reply to this email directly or view it on GitHub<https://github.com/pystruct/pystruct/pull/41/files#r5497925>
> .
>