public void SeesCorrectSubmatrixWhenTrainingWith0_5Coverage() { var inputsize = 10; var size = (uint)inputsize / 2; var coverage = 0.5; var layer = new Spatial2DLayer(SpatialLayerType.Gaussian, size, size, coverage, true, 1000); var list = from i in Enumerable.Range(0, inputsize) select (double)i; var matrix = new SparseMatrix(inputsize, inputsize); for (int i = 0; i < matrix.RowCount; ++i) { matrix.SetRow(i, list.ToArray()); } // for each node in the 2D layer for (int nodeRow = 0; nodeRow < layer.Height; nodeRow++) { for (int nodeCol = 0; nodeCol < layer.Width; nodeCol++) { // Act var subMatrix = layer.GetSubMatrixForNodeAt(nodeRow, nodeCol, matrix); // check if its 2D input is ok var width = inputsize / size + coverage * (inputsize - inputsize / size); var delta = (inputsize - width) / (size - 1); for (int i = 0; i < (int)width; i++) { for (int j = 0; j < (int)width; j++) { Assert.AreEqual(nodeCol * delta + j, subMatrix[i, j]); } } } } }
public void SeesCorrectSubmatrixWhenCloneTrainingWith0Coverage() { var inputsize = 10; var size = (uint)inputsize / 2; var coverage = 0.0; var layer = new Spatial2DLayer(SpatialLayerType.Gaussian, size, size, coverage, true, 1000); var list = from i in Enumerable.Range(0, inputsize) select (double)i; var matrix = new SparseMatrix(inputsize, inputsize); for (int i = 0; i < matrix.RowCount; ++i) { matrix.SetRow(i, list.ToArray()); } // Act var subMatrix = layer.GetSubMatrixForNodeAt(layer.ClonedNodeRow, layer.ClonedNodeCol, matrix); // var width = inputsize / size + coverage * (inputsize - inputsize / size); var delta = (inputsize - width) / (size - 1); var centerRow = layer.Height / 2; var centerCol = layer.Width / 2; for (int i = 0; i < (int)width; i++) { for (int j = 0; j < (int)width; j++) { Assert.AreEqual(centerCol * delta + j, subMatrix[i, j]); } } }