java tensorflow api:无效的JPEG数据,大小为0

时间:2017-04-04 10:38:16

标签: java tensorflow

首先,当我尝试使用初始模型版本5的LabelImage example时,一切都很好。

然后我尝试使用较旧的初始模型(ver3),我看到两个模型都有不同的输入和输出。

在ver5中,我们的输入张量名称为:“Input”,dtype = FLOAT。

在第3版中,我们的输入张量名称为“DecodeJpeg / contents”,dtype = STRING。

所以我用输入和输出的新名称更改LabelExample示例:Tensor result = s.runner().feed("input", string_tensor_image).fetch("output")>> s.runner().feed("DecodeJpeg/contents", image).fetch("softmax")

另外,我更改了为STRING类型创建新的图像张量:

Tensor float_tensor = s.runner().fetch(output.op().name()).run().get(0);
byte[] bytes = new byte[float_tensor.numBytes()*64];
ByteBuffer buffer = ByteBuffer.wrap(bytes);
res.writeTo(buffer);
long[] shape = {};
Tensor string_tensor = Tensor.create(DataType.STRING, shape, buffer);
return string_tensor;

当我打印张量时看起来很好:

FLOAT tensor with shape [1, 224, 224, 3]
STRING tensor with shape []

但是在输入图表之后,我收到了这个错误: Exception in thread "main" java.lang.IllegalArgumentException: Invalid JPEG data, size 0 [[Node: DecodeJpeg = DecodeJpeg[acceptable_fraction=1, channels=3, dct_method="", fancy_upscaling=true, ratio=1, try_recover_truncated=false, _device="/job:localhost/replica:0/task:0/cpu:0"]

我尽我所能,但没有结果。我该如何解决? 这是初始模型ver3和ver 5:

ver5:https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip

第3版:http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz

1 个答案:

答案 0 :(得分:0)

这两个模型似乎不同,并采用不同的输入。特别是DecodeJpeg op takes as input the raw contents of the JPEG image,这就是为什么它返回一个错误,说它没有被输入JPEG编码的图像。

所以你想做类似的事情:

byte[] input = Files.readAllBytes(Paths.get("/path/to/image.jpg"));
Tensor image = Tensor.create(input);