aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-11-08 14:33:17 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2019-11-08 14:33:17 +0100
commitdf287b9364b8088192146df70f5f4814ff6c94c1 (patch)
tree8ee439c76b6640ce22f121790d10895dd8bdf30c /vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java
parent5ccaab5e304bbedc2589610f12ea9fc83d1522ab (diff)
Always serialize dynamic tensors in verbose form
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java b/vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java
index c0d817459d0..d81c02fb75f 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/DimensionSizes.java
@@ -18,6 +18,21 @@ public final class DimensionSizes {
}
/**
+ * Create sizes from a type containing bound indexed dimensions only.
+ *
+ * @throws IllegalStateException if the type contains dimensions which are not bound and indexed
+ */
+ public static DimensionSizes of(TensorType type) {
+ Builder b = new Builder(type.rank());
+ for (int i = 0; i < type.rank(); i++) {
+ if ( type.dimensions().get(i).type() != TensorType.Dimension.Type.indexedBound)
+ throw new IllegalArgumentException(type + " contains dimensions without a size");
+ b.set(i, type.dimensions().get(i).size().get());
+ }
+ return b.build();
+ }
+
+ /**
* Returns the length of this in the nth dimension
*
* @throws IllegalArgumentException if the index is larger than the number of dimensions in this tensor minus one