public override (NDArrayOrSymbol[], NDArrayOrSymbol[]) Unroll(int length, NDArrayOrSymbol[] inputs, NDArrayOrSymbol[] begin_state = null, string layout = "NTC", bool?merge_outputs = null, Symbol valid_length = null) { Reset(); BaseCell._modified = false; var(outputs, states) = BaseCell.Unroll(length, inputs, begin_state, layout, merge_outputs, valid_length); BaseCell._modified = true; if (!merge_outputs.HasValue) { merge_outputs = outputs.Length > 1; } if (merge_outputs.Value) { outputs = outputs.Zip(inputs, (i, j) => { if (i.IsNDArray) { return(new NDArrayOrSymbol(nd.ElemwiseAdd(i, j))); } return(new NDArrayOrSymbol(sym.ElemwiseAdd(i, j))); }).ToArray(); } return(outputs, states); }