public static Tensor Forward(Tensor A, AxisZero dim, int copies, int copies2 = 0) { Matrix m = null; if (dim == AxisZero.horizontal) { m = Matrix.Zeros(A.Data.X, copies); Matrix.MatrixLoop((i, j) => { m[i, j] = A.Data[i, 0]; }, A.Data.X, copies); } else if (dim == AxisZero.vertical) { m = Matrix.Zeros(copies, A.Data.Y); Matrix.MatrixLoop((i, j) => { m[i, j] = A.Data[0, j]; }, copies, A.Data.Y); } else if (dim == AxisZero.none) { m = Matrix.Zeros(copies, copies2); Matrix.MatrixLoop((i, j) => { m[i, j] = A.Data[0, 0]; }, copies, copies2); } if (A.AutoGrad) { var Creators = new List <Tensor>() { A }; var Argument = new List <object>() { dim }; return(new Tensor(m, autoGrad: true, creators: Creators, arguments: Argument, backwardCallback: Backward )); } return(new Tensor(m)); }
//Sumatory public static Matrix Sumatory(Matrix m, AxisZero dimension = AxisZero.none) { double[,] output; if (dimension == AxisZero.none) { output = new double[1, 1]; } else if (dimension == AxisZero.horizontal) { output = new double[m.X, 1]; } else if (dimension == AxisZero.vertical) { output = new double[1, m.Y]; } else { throw new ArgumentException("The dimension must be -1, 0 or 1"); } if (dimension == AxisZero.none) { MatrixLoop((i, j) => { output[0, 0] += m.GetValue(i, j); }, m.X, m.Y); } else if (dimension == AxisZero.horizontal) { MatrixLoop((i, j) => { output[i, 0] += m.GetValue(i, j); }, m.X, m.Y); } else if (dimension == AxisZero.vertical) { MatrixLoop((i, j) => { output[0, j] += m.GetValue(i, j); }, m.X, m.Y); } return(output); }
public static Tensor Forward(Tensor A, AxisZero dim) { if (A.AutoGrad) { var Argument = new List <object>() { dim, new int[] { A.Data.X, A.Data.Y } }; var Creators = new List <Tensor>() { A }; return(new Tensor(A.Data.Sumatory(dim), autoGrad: true, creators: Creators, arguments: Argument, backwardCallback: Backward)); } return(new Tensor(A.Data.Sumatory(dim))); }
public Matrix Sumatory(AxisZero dimension = AxisZero.none) { return(Sumatory(this, dimension)); }
public static Tensor Sum(this Tensor A, AxisZero dim) { return(Summation.Forward(A, dim)); }
public static Tensor Exp(this Tensor A, AxisZero dim, int copies, int copies2 = 0) { return(Expand.Forward(A, dim, copies, copies2)); }