Neural network Keras中的输入预处理

Neural network Keras中的输入预处理,neural-network,keras,Neural Network,Keras,我有一个关于Keras中输入预处理的问题 如果你看预处理的源代码 默认的预处理模式似乎是Caffe。他们的代码片段也直接使用它 我的问题是,为什么Keras不检查Keras.backend()以找到正确的模式并适当地进行预处理?这可能是一个bug吗 我的后端是tensorflow,所以我想知道直接运行示例中提供的代码是否是一个好主意 谢谢每个模型都有自己的预处理 有些人从您所展示的代码中获取预处理(在代码中用mode='caffe'明确声明)。一些模型声明了自己的预处理。始终从与您尝试实例化

我有一个关于Keras中输入预处理的问题

如果你看预处理的源代码

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

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

我的后端是tensorflow,所以我想知道直接运行示例中提供的代码是否是一个好主意


谢谢

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

有些人从您所展示的代码中获取预处理(在代码中用
mode='caffe'
明确声明)。一些模型声明了自己的预处理。始终从与您尝试实例化的模型相同的模块导入预处理函数,以便导入正确的函数

该模式适合于模型的构建方式。如果模型是使用
caffe
模式构建的,那么它只能在输入符合该规范的情况下正常工作

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


Tensorflow还是Theano

这并不重要。Keras能够正确处理这些格式。
正如您在该源代码中看到的,keras具有
K.image\u data\u format()
,该格式取自您的默认配置(您可以在
keras.json
文件中找到默认配置,通常是
channels\u last


Keras将正确处理格式,无论您使用的是Theano还是Tensorflow。我建议,除非您有理由或明确的偏好,否则您应将配置保持为上次使用
频道时的状态。这使得卷积层与其他层和损耗函数更容易集成。keras中的所有内容都会在最后一个轴上工作,因此,将通道也保留在最后一个位置,以避免额外的工作。

谢谢。我的印象是keras的作者使用与他们的名字对应的预处理来训练神经网络。预处理似乎不仅仅是通道顺序。如果您看到这些注释,似乎mode='caffe'只进行居中,而mode='tensorflow'也进行缩放..Resnet50不是唯一一个使用输入预处理而不更改模式的..是的,caffe居中,但保持范围255。Tensorflow重缩放。但这些并不是“系统”真正需要的。您可以使用tensorflow创建一个接受任何类型输入的模型。关键是,这些预训练的模型是用这种数据训练的,因此必须输入相同类型的数据。唯一的“系统”差异是通道顺序,keras会自动处理。Resnet50是以数据为中心而不是按比例进行训练的。因此,输入数据必须居中而不是缩放,否则模型将无法正常工作。它专门针对此类数据进行了培训(与您使用的系统无关)