public void UpdateBias(IMatrix delta, ILearningContext context) { using (var columnSums = delta.ColumnSums()) { columnSums.Multiply(1f / delta.RowCount); _bias.AddInPlace(columnSums, 1f, context.BatchLearningRate); } }
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()); }
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); }
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); }
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); } } }
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); }