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

ResNet model in keras and tf.keras give different output for the same image

对于给定的图像,我正在提取 ResNet 特征,即在所有 conv 层和全局最大池化之后,它为每个图像提供 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)

模型本身不断更新,并使用具有更好结果的权重。 Here是releases文件夹,可以看到不同权重文件的releases。链接的文件夹用于 keras,tf.keras 很可能也使用了它。 您遇到的问题可能是因为库的版本而不是调用模型的方法。

例如,here 你可以找到 keras_applications 代码并检查指向发布 v0.2 的权重路径(链接是 keras,但与 tensorflow.keras 类似)。

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