public I3DTensor CreateTensor(IIndexable3DTensor tensor) { var matrixList = tensor.Data.Select(d => (GpuMatrix)Create(d)).ToList(); var ret = new Gpu3DTensor(this, tensor.RowCount, tensor.ColumnCount, tensor.Depth, matrixList); return(ret); }
public static void AssertEqual(IIndexable3DTensor t1, IIndexable3DTensor t2, int maxDifference = 6) { Assert.AreEqual(t1.Depth, t2.Depth); for (var i = 0; i < t1.Depth; i++) { AssertEqual(t1.Data[i], t2.Data[i]); } }
/// <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(IIndexable3DTensor t1, IIndexable3DTensor t2) { using var stringWriter = new StringWriter(); using var writer = new XmlTextWriter(stringWriter); _Write(t1, t2, writer); writer.Flush(); return(stringWriter.ToString()); }
static void _Write(IIndexable3DTensor t1, IIndexable3DTensor t2, XmlTextWriter writer) { writer.WriteStartElement("tensor-3d"); writer.WriteAttributeString("d1", t1.Depth.ToString()); writer.WriteAttributeString("d2", t2.Depth.ToString()); foreach (var matrix in t1.Matrix.Zip(t2.Matrix, (m1, m2) => (m1, m2))) { _Write(matrix.Item1, matrix.Item2, writer); } writer.WriteEndElement(); }
/// <summary> /// Create a 3D tensor /// </summary> /// <param name="lap"></param> /// <param name="tensor">An indexable 3D tensor to use as a source</param> public static I3DTensor Create3DTensor(this ILinearAlgebraProvider lap, IIndexable3DTensor tensor) { return(lap.Create3DTensor(tensor.Matrix.Select(m => CreateMatrix(lap, m)).ToList())); }
public I3DTensor CreateTensor(IIndexable3DTensor tensor) { return(new Cpu3DTensor(tensor.Data.Select(m => CreateMatrix(m.Data)).ToList())); }