2017-08-18 14 views
0

私は二つの同一の画像(犬)を持っているTensorflow-Javaイメージ比較

:-)基本的な疑問の負荷ので、tensorflowに新しいですが、私は、1(すなわち、私は犬の小片をカットしてください編集しました私はテンソルを印刷するときに同じ値を持ちますが、2つの異なる値ではないでしょうか?これらの2つの画像の違いをどうやって教えてくれるでしょうか?私はこれらの2つの画像の間でどのくらい変化したかを測定したい。

Tensor:- 
[172, 293, 3, 1] 

Code:- 
    final Output input = b.constant("input", imgBytes); 
    output = b.expandDims(
        b.cast(b.decodeJpeg(input, 3), DataType.FLOAT), 
        b.constant("make_batch", 3)); 

    try (Session s = new Session(g)) { 
     t = s.runner().fetch(output.op().name()).run().get(0); 
    } 
    System.out.println("output1="+t.toString()); 

@pybコードフォーマットありがとうございます。

+0

私は4つのスペースであなたのコードをインデントしてフォーマットされました。 – pyb

+0

"それは同じ価値がある"ということを詳しく説明できますか?どのようにテンソルの値を印刷していますか?のように、 '[172、293、3、1]という文字列はどこから来ますか? – ash

+0

シェルドン・クーパーの言葉で私はブー・ブーを作ったので、関連性の高い質問を投稿して編集する – Rrrrr

答えて

1

Tensor.toString()は、テンソルの内容の値を返しません。これは、メタデータを記述する文字列(形状と型)を返します(リンクされたjavadocを参照)。

文字列[172, 293, 3, 1]が、Tensor.toString()actually printsの切り詰め形式であると思われます。これはFLOAT tensor with shape [172, 293, 3, 1]のようなものです。

この場合、両方の画像が同じ寸法(172x293x3ピクセル画像)であるため、同じ文字列が表示されます。例えばTensor.writeToまたはTensor.copyTo

を参照して、テンソルの内容を表示するには

float[][][] contents = t.copyTo(new float[172][293][3]); 
System.out.println(Arrays.toString(contents)); 

お役に立てば幸いです。