Skip to content

Commit 17303e0

Browse files
fix a issue in batch process
1 parent c8abadf commit 17303e0

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

src/Microsoft.ML.TimeSeries/SrCnnEntireAnomalyDetector.cs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,15 @@ public void Process()
309309
_previousBatch = _previousBatch.GetRange(_batch.Count, _bLen);
310310
_previousBatch.AddRange(_batch);
311311
_modeler.Train(_previousBatch.ToArray(), ref _results);
312+
313+
// move the values to front
314+
for (int i = 0; i < _batch.Count; ++i)
315+
{
316+
for (int j = 0; j < _outputLength; ++j)
317+
{
318+
_results[i][j] = _results[_bLen + i][j];
319+
}
320+
}
312321
}
313322
else
314323
{
@@ -334,7 +343,7 @@ public ValueGetter<VBuffer<double>> CreateGetter(DataViewRowCursor input, string
334343
double src = default;
335344
srcGetter(ref src);
336345
var result = VBufferEditor.Create(ref dst, _outputLength);
337-
_results[input.Position % _batchSize + _bLen].CopyTo(result.Values);
346+
_results[input.Position % _batchSize].CopyTo(result.Values);
338347
dst = result.Commit();
339348
};
340349
return getter;
@@ -587,10 +596,11 @@ private void SpectralResidual(double[] values, double[][] results, double thresh
587596
{
588597
_ifftMagList[i] = Math.Sqrt(_ifftRe[i] * _ifftRe[i] + _ifftIm[i] * _ifftIm[i]);
589598
}
590-
AverageFilter(_ifftMagList, Math.Min(_ifftMagList.Length, _judgementWindowSize), true);
591-
for (int i = 1; i <= Math.Min(length, _minimumScoreWindowSize); ++i)
599+
600+
AverageFilter(_ifftMagList, Math.Min(_ifftMagList.Length, _judgementWindowSize));
601+
for (int i = 0; i <= Math.Min(length, _minimumScoreWindowSize); ++i)
592602
{
593-
_cumSumList[i] = _cumSumList[Math.Min(length - 1, _minimumScoreWindowSize + 1)];
603+
_cumSumList[i] = _cumSumList[Math.Min(length, _minimumScoreWindowSize) - 1];
594604
}
595605

596606
// Step 7: Calculate raw score and set result
@@ -653,13 +663,13 @@ private void AverageFilter(double[] data, int n, bool ignoreFirst=false)
653663
_cumSumList[i] = cumsum;
654664
_cumSumShift[i] = cumsum;
655665
}
656-
for (int i = n + 1; i < length; ++i)
666+
for (int i = n; i < length; ++i)
657667
{
658668
_cumSumList[i] = (_cumSumList[i] - _cumSumShift[i - n]) / n;
659669
}
660-
for (int i = 1; i <= n && i < length; ++i)
670+
for (int i = 1; i < n; ++i)
661671
{
662-
_cumSumList[i] = ignoreFirst ? (_cumSumShift[i] - _cumSumShift[0]) / i : _cumSumList[i] / (i + 1);
672+
_cumSumList[i] /= (i + 1);
663673
}
664674
}
665675

0 commit comments

Comments
 (0)