Example #1
0
        public override MultiMatrix slideOver(MultiMatrix inData)
        {
            var outData = new MultiMatrix(getOutputDims(inData));

            foreach (var coords in outData.AllCoords())
            {
                outData.setAt(coords, getSumAt(inData, coords.mapWith(Stride, (c, s) => c * s)));
            }
            return(outData);
        }
Example #2
0
        public override MultiMatrix getGradientInput(MultiMatrix inData, MultiMatrix nextGradient)
        {
            var gradientIn = MultiMatrix.Build.repeat(inData.Dimensions, 0);

            foreach (var coords in nextGradient.AllCoords())
            {
                foreach (var offset in Weights.AllCoords())
                {
                    gradientIn.addAt(coords.add(offset), nextGradient.at(coords) * Weights.at(offset));
                }
            }
            return(gradientIn);
        }
Example #3
0
        }// TODO check ?

        public MultiMatrix getGradientWeights(MultiMatrix inData, MultiMatrix nextGradient)
        {
            var gradientW = new MultiMatrix(this.Dimensions);

            foreach (var coord in nextGradient.AllCoords())
            {
                foreach (var offset in this.weights.AllCoords())
                {
                    var nearbyCoord = coord.add(offset);
                    gradientW.addAt(offset, nextGradient.at(coord) * inData.at(nearbyCoord));
                }
            }
            return(gradientW);
        }