Tensorflow-Java 图像比较

Tensorflow-Java Image Comparison

我是 tensorflow 的新手,所以有很多基本的疑问:-)

我有两个相同的图像(狗),我编辑了一个(即我剪了一小块狗,请不要以科学的名义讨厌我)现在我已经创建了一个张量这两个图像,当我打印张量时它具有相同的值,它不应该是两个不同的值吗?我将如何分辨这两个图像之间的区别?我想测量这两张图片之间的变化程度和变化。

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,感谢代码格式。

Tensor.toString()不return张量内容的值。它 return 是一个描述元数据的字符串 - 形状和类型(参见链接的 javadoc)。

我怀疑字符串 [172, 293, 3, 1]Tensor.toString() actually prints 的截断形式,类似于 FLOAT tensor with shape [172, 293, 3, 1].

如果是这种情况,您会看到相同的字符串,因为两个图像具有相同的尺寸(它们是 172x293x3 像素图像)。

要查看张量的内容,请参阅Tensor.writeTo or Tensor.copyTo

例如:

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

希望对您有所帮助。