keras 和 tf.keras 中的 ResNet 模型为同一图像提供不同的输出



对于给定的图像,我正在提取 ResNet 特征,即在所有卷积层和全局最大池化之后,每个图像给出 2048 长度的矢量。

早些时候,我将keras==2.3.1与后端tensorflow==1.13.1一起使用。现在,我已经转向tensorflow==2.0.0,因为 keras 已与 tensorflow 合并。我用tf.keras代替了我的代码而不是keras.

但是现在提取的特征与之前提取的特征不同。ResNet 是一个独立于 tensorflow/keras 甚至 pytorch 的模型。它的功能是预定义的。为什么会出现这种差异?是否有任何参数可以调整以获得相同的功能?

编辑 1:添加代码

from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input
resnet_model = ResNet50(include_top=False)

模型本身不断更新,并使用结果更好的权重。这是发布文件夹,您可以在其中查看不同权重文件的发布。链接的文件夹用于 keras,tf.keras 很可能也使用它。 您面临的问题可能是由于库的版本而不是调用模型的方法。

例如,在这里你可以找到keras_applications代码并检查指向版本 v0.2 的权重路径(链接的是 keras,但类似地用于 tensorflow.keras(。

较旧的库版本具有较旧的链接,更新库也会更新路径。

最新更新