为什么 Keras 不处理图像的 Theano 和 TF 表示之间的差异?

Why doesn't Keras handle the difference between Theano and TF representations for images?

为什么 Keras 不处理带有通道的图像的 Theano 和 Tensorflow 表示之间的差异?例如,如果你使用 Theano 作为后端,它们的图像是 (samples, color_depth, width, height) 形式,如果你使用 TF,那么图像是(samples, width, height, color_depth) 格式。似乎 Keras 可以只使用一个或另一个,然后在幕后重新格式化形状。

Keras 只使用一种表示。

按照标准,它使用 channels_last。 如果用户愿意,可以将其更改为 channels_first

您可以创建一个 keras 模型并将其与 tensorflow 或 theano 一起使用,而无需更改模型的任何内容。

文件keras.json包含标准定义:

{
    "floatx": "float32",
    "image_data_format": "channels_last",
    "epsilon": 1e-07,
    "backend": "tensorflow"
}

文件可以在<user>\.keras\keras.json

中找到

您还可以通过为每个图层定义参数 data_format 来覆盖标准设置。 (参见 here)。

最好避免直接使用tensorflow或theano函数。对于有必要的情况,请尝试 Keras backend 功能。