为什么tf.image.decode_jpeg可以解码png?

use*_*771 3 python image tensorflow

今天我正在测试一些tensorflow(python)代码。这是著名的MNIST装置上的神经网络。

一切工作正常,因此我只是通读了代码并研究了该网络的结构。

当涉及到图像输入时,我发现以下代码:

image_string = tf.read_file(filename)

image_decoded = tf.image.decode_jpeg(image_string, channels=3)
Run Code Online (Sandbox Code Playgroud)

该代码使用的是“ decode_jpeg”而不是“ decode_png”。而且我没有看到任何错误。

但是,我100%确定图片为PNG格式。

我用过

od -c -b 1.png
Run Code Online (Sandbox Code Playgroud)

查看这些图像,它们就是PNG。

那么,为什么“ decode_jpeg”可以在PNG上工作?并且是否有由此引起的潜在问题?

Jam*_*ent 5

用于tensorflow文档状态:

由于接口相同,该操作还支持解码PNG和非动画GIF,尽管使用tf.image.decode_image更为干净。

因此,从根本上说,这是一个设计决策,因为只需要处理接口就可以使接口相同,而不是抛出迫使用户使用正确的API调用的错误。