2017-04-04 16 views
0

最初に、LabelImage exampleを開始モデルver 5で試したところ、すべてが良好でした。java tensorflow api:無効なJPEGデータ、サイズ0

次に、古いモデル(ver3)で試してみましたが、両方のモデルの入力と出力が異なることがわかりました。

ver5では、入力テンソル名は「入力」で、dtype = FLOATです。

ver3では、入力テンソル名は "DecodeJpeg/contents"で、dtype = STRINGです。

私は、入力と出力の両方に新しい名前のLabelExampleの例を変更します:Tensor result = s.runner().feed("input", string_tensor_image).fetch("output") >>s.runner().feed("DecodeJpeg/contents", image).fetch("softmax")私は両方のテンソル印刷時に

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; 

はそれは良い見えた:

また、私はSTRINGタイプのための新しいイメージテンソルを作成変え

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と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

+0

を、いずれかが私を助けることができますか? – voxter

+0

私はあなたの意図を誤解している場合は私を修正してください:v3に画像を供給したいのですが、それは入力パイプラインの一部として何らかのデコードをしていますか? DecodeJpegオペレーションの後に*デコードされた画像があるように思えます(プレースホルダだけでなく、どの演算にも値を与えることができますし、データがそれらの「上流」に供給されるとき)。 –

答えて

0

2つのモデルが異なっていてもよく、異なる入力を取るように見えます。特に、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); 
+0

ありがとう – voxter

関連する問題