在Keras中输入预处理

时间:2018-01-20 01:18:46

标签: neural-network keras

我对Keras中的输入预处理有疑问。

如果查看预处理源代码

https://github.com/keras-team/keras/blob/master/keras/applications/imagenet_utils.py#L149

默认的预处理模式似乎是Caffe。他们的代码片段也直接使用它

https://github.com/fchollet/deep-learning-models

我的问题是,为什么Keras没有检查Keras.backend()以找到正确的模式并进行适当的预处理?这可能是个错误吗?

我的后端是张量流,所以我想知道如果他们的示例中提供的代码直接运行是个好主意。

由于

1 个答案:

答案 0 :(得分:1)

每个模型都有自己的预处理。

有些人会从您展示的代码中进行预处理(使用mode='caffe'明确声明的代码)。有些模型声明自己的预处理。始终从与您尝试实例的模型相同的模块中导入预处理功能,因此您可以导入正确的功能。

该模式适合模型的构建方式。如果使用caffe模式构建模型,那么它仅适用于遵循该规范的输入。

同样适用于所有其他模式。

Tensorflow或Theano?

这并不重要。 Keras确实正确处理这些格式 正如您在该源代码中看到的那样,keras具有K.image_data_format(),它取自您的默认配置(您在channels_last文件中找到了默认配置,通常为keras.json) 。

无论您是使用Theano还是Tensorflow,Keras都能正确处理格式。我建议,除非你有理由或明确的偏好,否则就像channels_last一样离开配置。这使得更容易将卷积层与其他层和损失函数集成。 keras中的所有内容都倾向于在最后一个轴上工作,因此,将通道保留在最后位置以避免额外的工作。