Beispiel #1
0
 public void UpdateBias(IMatrix delta, ILearningContext context)
 {
     using (var columnSums = delta.ColumnSums()) {
         columnSums.Multiply(1f / delta.RowCount);
         _bias.AddInPlace(columnSums, 1f, context.BatchLearningRate);
     }
 }
Beispiel #2
0
            public IMatrix Convert(IMatrix matrix)
            {
                if (matrix == null)
                {
                    return(null);
                }

                var     ret  = new List <IVector>();
                IVector curr = null;
                var     size = _layer._descriptor.FilterSize;

                for (int i = 0, len = matrix.ColumnCount; i < len; i++)
                {
                    var column = matrix.Column(i);
                    if (i % size == 0)
                    {
                        curr = column;
                        ret.Add(curr);
                    }
                    else
                    {
                        curr.AddInPlace(column);
                    }
                }
                using (var ret2 = _layer._lap.Create(ret))
                    return(ret2.Transpose());
            }
Beispiel #3
0
 public void Update(IMatrix biasDelta, IMatrix weightDelta, float weightCoefficient, float learningRate)
 {
     if (biasDelta != null)
     {
         using (var columnSums = biasDelta.ColumnSums())
             _bias.AddInPlace(columnSums, 1f / columnSums.Count, learningRate);
     }
     _weight.AddInPlace(weightDelta, weightCoefficient, learningRate);
 }
Beispiel #4
0
            public Centroid(Centroid left, Centroid right)
            {
                _left  = left;
                _right = right;
                _data.AddRange(left._data);
                _data.AddRange(right._data);

                // average the two centroid vectors
                Center = left.Center;
                Center.AddInPlace(right.Center, 0.5f, 0.5f);
            }
Beispiel #5
0
        public void Update(IMatrix biasDelta, IMatrix weightDelta, float weightCoefficient, float learningRate)
        {
            if (biasDelta != null)
            {
                using (var columnSums = biasDelta.ColumnSums())
                    _bias.AddInPlace(columnSums, 1f / columnSums.Count, learningRate);
            }
            using (var transpose = weightDelta.Transpose())
                _weight.AddInPlace(transpose, weightCoefficient, learningRate);

            _weightTranspose.Dispose();
            _weightTranspose = _weight.Transpose();
        }
        public void Update(IVector data)
        {
            ++_count;
            using (var delta = data.Subtract(_mean))
                using (var diff = delta.Clone()) {
                    diff.Multiply(1f / _count);
                    _mean.AddInPlace(diff);

                    using (var delta2 = data.Subtract(_mean))
                        using (var diff2 = delta.PointwiseMultiply(delta2)) {
                            _m2.AddInPlace(diff2);
                        }
                }
        }
Beispiel #7
0
        public IVector ColumnSums()
        {
            IVector ret = null;

            for (var i = 0; i < Count; i++)
            {
                var tensorAsMatrix = GetTensorAt(i).ReshapeAsMatrix();
                var columnSums     = tensorAsMatrix.ColumnSums();
                if (ret == null)
                {
                    ret = columnSums;
                }
                else
                {
                    ret.AddInPlace(columnSums);
                }
            }
            return(ret);
        }
 public void UpdateBias(IMatrix delta, ILearningContext context)
 {
     using var columnSums = delta.ColumnSums();
     _bias.AddInPlace(columnSums, 1f / columnSums.Count, context.BatchLearningRate);
 }