gpt4 book ai didi

python - Keras 2 代码正在执行 keras 1 兼容代码

转载 作者:太空宇宙 更新时间:2023-11-04 02:39:16 24 4
gpt4 key购买 nike

我正在尝试运行一个使用 keras/tensorflow 的示例。我正在使用 Keras 2.0.8。当我写下这段简单的代码时:

from keras.layers import ZeroPadding2D
pad = ZeroPadding2D(padding=(1, 1), data_format=None)

并尝试调试 ZeroPadding2D 我被定向到一个名为 convolutional.py 的文件,其中包含 @interfaces.legacy_zeropadding2d_support 语句。我有点迷路了,但我认为这是 keras 1 的兼容性代码。我检查了 ZeroPadding2D 的 keras 1 和 2 定义:

# keras 1
keras.layers.convolutional.ZeroPadding2D(padding=(1, 1), dim_ordering='default')

# keras 2
keras.layers.ZeroPadding2D(padding=(1, 1), data_format=None)
  • 因为我的导入明确引用了 keras 2(导入中不包含任何卷积)和
  • 我的函数调用也是 keras 2 特定的,因为它包含 data_format 参数,我应该被定向到 keras 2 实现吗?

我在这里错过了什么?我知道在 here 中提到的兼容性接口(interface) 需要特别注意。用于在 keras 2 中运行 keras 1 代码,但我的(小)代码中有一些东西是 keras 1 吗?

我是 python 的新手(如果不是很明显的话),如果这有所不同,我正在使用 pyCharm 进行调试。

那么,我应该如何只运行 keras 2 代码,其次我在上述情况下缺少什么?

最佳答案

您的代码是 Keras 2,一切正常。

虽然您从 keras.layers 导入层,但在内部它是从 keras.layers.convolutional 导入的。你可以检查keras 2.0.8代码,layers folder中没有ZeroPadding2D .它只能在 convolutional.py 中找到。 __init__ 文件负责自动导入其他文件中的图层。

现在,@interfaces.legacy... 行被称为“装饰器”,它为它出现的方法添加了一些额外的功能。它位于真正的 keras 2 代码之上,用于处理用户尝试输入 keras 1 参数的可能性。

你看到的代码是keras 2。你可以看看legacy.interface看看这个装饰器添加了什么。

它增加了使用旧的 dim_ordering 而不是 data_format 的可能性,并且它从 dim_ordering 的旧值进行了适当的转换,其中 tfth 为新值,channels_lastchannels_first

关于python - Keras 2 代码正在执行 keras 1 兼容代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47017035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com