diff --git a/src/main/java/org/bioimageanalysis/icy/deeplearning/tensorflow/v1/tensor/MappedBufferToImgLib2.java b/src/main/java/org/bioimageanalysis/icy/deeplearning/tensorflow/v1/tensor/MappedBufferToImgLib2.java index fbeb1591f92953468d5ad3fb1cc00c7bccef5cbc..f5d63adbee9e1e4848d709b4b9923f042af2573b 100644 --- a/src/main/java/org/bioimageanalysis/icy/deeplearning/tensorflow/v1/tensor/MappedBufferToImgLib2.java +++ b/src/main/java/org/bioimageanalysis/icy/deeplearning/tensorflow/v1/tensor/MappedBufferToImgLib2.java @@ -76,6 +76,8 @@ public final class MappedBufferToImgLib2 String axes = (String) map.get(AXES_KEY); String name = (String) map.get(NAME_KEY); long[] shape = (long[]) map.get(SHAPE_KEY); + if (shape.length == 0) + return Tensor.buildEmptyTensor(name, axes); Img<T> data; switch (dtype) @@ -114,6 +116,8 @@ public final class MappedBufferToImgLib2 HashMap<String, Object> map = getDataTypeAndShape(infoStr); String dtype = (String) map.get(DATA_TYPE_KEY); long[] shape = (long[]) map.get(SHAPE_KEY); + if (shape.length == 0) + return null; // Create an INDArray of the same type of the tensor switch (dtype) @@ -253,7 +257,7 @@ public final class MappedBufferToImgLib2 String nameStr = m.group(3); String shapeStr = m.group(4); long[] shape = new long[0]; - if (!shapeStr.isEmpty()) { + if (!shapeStr.isEmpty() && !shapeStr.equals("[]")) { String[] tokens = shapeStr.split(", ?"); shape = Arrays.stream(tokens).mapToLong(Long::parseLong).toArray(); } diff --git a/src/main/java/org/bioimageanalysis/icy/deeplearning/tensorflow/v1/tensor/MappedFileBuilder.java b/src/main/java/org/bioimageanalysis/icy/deeplearning/tensorflow/v1/tensor/MappedFileBuilder.java index af8ade9ad1acade71a582ea82ec0c9f7e5f0e494..a941153bd503ffc28010c11ca1829bf70bf5bee3 100644 --- a/src/main/java/org/bioimageanalysis/icy/deeplearning/tensorflow/v1/tensor/MappedFileBuilder.java +++ b/src/main/java/org/bioimageanalysis/icy/deeplearning/tensorflow/v1/tensor/MappedFileBuilder.java @@ -1,14 +1,9 @@ package org.bioimageanalysis.icy.deeplearning.tensorflow.v1.tensor; import java.nio.ByteBuffer; -import java.nio.DoubleBuffer; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; import java.util.Arrays; -import org.bioimageanalysis.icy.deeplearning.utils.IndexingUtils; import org.tensorflow.Tensor; -import org.tensorflow.types.UInt8; import net.imglib2.Cursor; import net.imglib2.RandomAccessibleInterval; @@ -188,9 +183,11 @@ public final class MappedFileBuilder */ public static < T extends RealType< T > & NativeType< T > > byte[] createFileHeader(org.bioimageanalysis.icy.deeplearning.tensor.Tensor<T> tensor) { + String dimsStr = + tensor.getData() != null ? Arrays.toString(tensor.getData().dimensionsAsLongArray()) : "[]"; String descriptionStr = "{'dtype':'" + tensor.getDataType() + "','axes':'" + tensor.getAxesOrderString() + "','name':'" + tensor.getName() + "','shape':'" - + Arrays.toString(tensor.getData().dimensionsAsLongArray()) + "'}"; + + dimsStr + "'}"; byte[] descriptionBytes = descriptionStr.getBytes(); int lenDescriptionBytes = descriptionBytes.length;