/// <summary> /// Zips two tensors and writes the values side by side /// </summary> /// <param name="t1">First tensor</param> /// <param name="t2">Second tensor</param> /// <returns>Xml string</returns> public static string WriteComparison(IIndexable4DTensor t1, IIndexable4DTensor t2) { using var stringWriter = new StringWriter(); using var writer = new XmlTextWriter(stringWriter); _Write(t1, t2, writer); writer.Flush(); return(stringWriter.ToString()); }
public static void AssertEqual(IIndexable4DTensor t1, IIndexable4DTensor t2, int maxDifference = 6) { Assert.AreEqual(t1.Count, t2.Count); for (var i = 0; i < t1.Count; i++) { AssertEqual(t1.Tensors[i], t2.Tensors[i]); } }
static void _Write(IIndexable4DTensor t1, IIndexable4DTensor t2, XmlTextWriter writer) { writer.WriteStartElement("tensor-4d"); writer.WriteAttributeString("c1", t1.Count.ToString()); writer.WriteAttributeString("c2", t2.Count.ToString()); foreach (var tensor in t1.Tensors.Zip(t2.Tensors, (m1, m2) => (m1, m2))) { _Write(tensor.Item1, tensor.Item2, writer); } writer.WriteEndElement(); }