keras2代码正在执行keras1兼容性cod

2024-04-29 04:24:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试运行一个使用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语句。我有点迷茫,但我认为这是Keras1的兼容性代码。 我检查了ZeroPadding2D的keras 1和2定义:

^{pr2}$
  • 因为我的导入显式地引用keras2(它在导入中不包括任何convolutional)和
  • 我的函数调用也是keras2特有的,因为它包含data_format参数是否应该定向到keras2实现?在

我错过了什么?我知道在keras2内部运行keras1代码需要特别注意的是,兼容性接口here中所述,但是我的(小)代码中有什么东西是keras1?在

我对python还比较陌生(如果不是很明显的话),如果有什么不同的话,我正在使用pyCharm进行调试。在

那么,我该如何运行keras2代码,然后在上面的情况下我遗漏了什么呢?在


Tags: 代码fromimportformat示例datalayerstensorflow
1条回答
网友
1楼 · 发布于 2024-04-29 04:24:26

你的代码是Keras2,一切正常。在

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

现在,@interfaces.legacy...行被称为“decorator”,它在它出现的方法中添加了一些额外的功能。它位于一个真正的keras2代码之上,用来处理用户试图输入keras1参数的可能性。在

你看到的是ker2。你可以看看legacy.interface,看看这个装饰器添加了什么。在

它增加了使用旧的dim_ordering而不是data_format的可能性,并从dim_ordering的旧值进行适当的转换,其中tf和{}与新值channels_last和{}。在

相关问题 更多 >