This is an automated email from the ASF dual-hosted git repository.
mboehm7 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/systemds.git
The following commit(s) were added to refs/heads/main by this push:
new a973b11075 [SYSTEMDS-3696] Fix edge cases incremental sliceline
a973b11075 is described below
commit a973b1107567cca27a4c23ec3e230e17f00f46e7
Author: Frederic Zoepffel <[email protected]>
AuthorDate: Fri Sep 13 09:25:59 2024 +0200
[SYSTEMDS-3696] Fix edge cases incremental sliceline
Closes #2106.
---
scripts/builtin/incSliceLine.dml | 30 +++++++++++++++++-------------
1 file changed, 17 insertions(+), 13 deletions(-)
diff --git a/scripts/builtin/incSliceLine.dml b/scripts/builtin/incSliceLine.dml
index f00b3d89db..0ef77bd5f2 100644
--- a/scripts/builtin/incSliceLine.dml
+++ b/scripts/builtin/incSliceLine.dml
@@ -220,14 +220,6 @@ m_incSliceLine = function(
S = getPairedCandidatesInc(S, R, TKC, level, eAvg, minSup, alpha, n2,
foffb, foffe);
S2 = S;
- # prepare and store output lattice for next run
- Lrep = S
- if ( encodeLat ) {
- [Lrep, M] = transformSlicesToIDs(S, foffb, foffe);
- metaLattice = append(metaLattice, M);
- }
- L = append(L, Lrep);
-
# load one hot encoded previous lattice for the current level
prevLattice2 = matrix(0,0,0);
if(!disableIncSizePruning){
@@ -256,6 +248,14 @@ m_incSliceLine = function(
}
}
+ # prepare and store output lattice for next run
+ Lrep = S
+ if ( encodeLat ) {
+ [Lrep, M] = transformSlicesToIDs(S, foffb, foffe);
+ metaLattice = append(metaLattice, M);
+ }
+ L = append(L, Lrep);
+
if( nrow(S) > 0 ) {
# extract and evaluate candidate slices
if( tpEval ) { # task-parallel
@@ -559,11 +559,15 @@ oneHotEncodeUsingOffsets = function(Matrix[Double] A,
Matrix[Double] foffb, Matr
rix = removeEmpty(target=rix, margin="rows", select=ix);
cix = removeEmpty(target=cix, margin="rows", select=ix);
}
- # actual one-hot encoding
- A2 = table(rix, cix, 1, m, as.scalar(foffe[,n]), FALSE);
- }
- else {
- A2 = matrix(0, 0, as.scalar(foffe[,n]));
+
+ if (sum(rix) == 0 | sum(cix) == 0) {
+ A2 = matrix(0, 0, as.scalar(foffe[, n]));
+ } else {
+ # actual one-hot encoding
+ A2 = table(rix, cix, 1, m, as.scalar(foffe[, n]), FALSE);
+ }
+ } else {
+ A2 = matrix(0, 0, as.scalar(foffe[, n]));
}
}