g = fggs.HRG()
s = fggs.EdgeLabel("S", (), is_nonterminal=True)
g.start_symbol = s
p = fggs.EdgeLabel("p", (), is_terminal=True)
rhs = fggs.Graph()
rhs.add_edge(fggs.Edge(s, ()))
rhs.add_edge(fggs.Edge(p, ()))
g.add_rule(fggs.HRGRule(s, rhs))
rhs = fggs.Graph()
g.add_rule(fggs.HRGRule(s, rhs))
gi = fggs.Interpretation()
top = fggs.EdgeLabel("top", (), is_terminal=True)
gi.add_factor(top, fggs.CategoricalFactor([], torch.tensor(1.)))
gi.add_factor(p, fggs.CategoricalFactor([], torch.tensor(0.5)))
z = fggs.sum_product(fggs.FGG(g, gi), method='newton')
The error is:
File ".../fgg-implementation/fggs/sum_product.py", line 144, in J
terms.append(torch.einsum(equation, *(tensors[:i] + tensors[(i + 1):])))
File ".../torch/functional.py", line 408, in einsum
return _VF.einsum(equation, operands) # type: ignore
RuntimeError: einsum() must provide at least one operand
This code is giving me an error:
The error is: